// $Id$ // // File: DReaction_factory_sdobbs_ccbar.cc // Created: Thu Jul 14 17:03:48 EDT 2016 // Creator: robison (on Linux ifarm1401 2.6.32-431.el6.x86_64 x86_64) // #include "DReaction_factory_sdobbs_ccbar.h" //------------------ // brun //------------------ jerror_t DReaction_factory_sdobbs_ccbar::brun(JEventLoop* locEventLoop, int32_t locRunNumber) { vector locBeamPeriodVector; locEventLoop->GetCalib("PHOTON_BEAM/RF/beam_period", locBeamPeriodVector); dBeamBunchPeriod = locBeamPeriodVector[0]; return NOERROR; } //------------------ // evnt //------------------ jerror_t DReaction_factory_sdobbs_ccbar::evnt(JEventLoop* locEventLoop, uint64_t locEventNumber) { // Make as many DReaction objects as desired DReactionStep* locReactionStep = NULL; DReaction* locReaction = NULL; //create with a unique name for each DReaction object. CANNOT (!) be "Thrown" // DOCUMENTATION: // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction /************************************************** sdobbs_jpsigamma Reaction Definition *************************************************/ locReaction = new DReaction("sdobbs_jpsigamma"); //Required: DReactionSteps to specify the channel and decay chain you want to study //Particles are of type Particle_t, an enum defined in sim-recon/src/libraries/include/particleType.h // Reaction: g p -> p chi_cJ, chi_cJ -> Gamma J/psi locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Gamma); locReactionStep->Set_TargetParticleID(Proton); locReactionStep->Add_FinalParticleID(Chi_c1); locReactionStep->Add_FinalParticleID(Proton); //proton reconstructed locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // Chi_cJ -> gamma J/psi (don't constrain mass, so can look at all Chi_cJ's locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Chi_c1); locReactionStep->Add_FinalParticleID(Gamma); locReactionStep->Add_FinalParticleID(Jpsi); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //Does not constrain Chi_cJ mass. locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // Jpsi -> e+e- locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Jpsi); locReactionStep->Add_FinalParticleID(Electron); locReactionStep->Add_FinalParticleID(Positron); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //Does not constrain Jpsi mass. locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** sdobbs_jpsigamma Control Settings ****************************************************/ //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit locReaction->Set_KinFitType(d_P4AndVertexFit); locReaction->Set_EventStoreSkims("jpsi_ee,q0"); //boolean-AND of skims //This skim finds >=2+ tracks, >=1- track, and uses jpsi skim cuts: //Jpsi skim: invariant mass cut from 1.5 to 4 //Jpsi skim: measured E/p cut from 0.65 to 1.4 in both e- and e+ candidate. // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // Optional: When generating particle combinations, reject all photon candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinPhotonPIDFOM(5.73303E-7); // Optional: When generating particle combinations, reject all charged track candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinChargedPIDFOM(5.73303E-7); // Highly Recommended: Cut on number of extra "good" tracks. "Good" tracks are ones that survive the "PreSelect" (or user custom) factory. // Important: Keep cut large: Can have many ghost and accidental tracks that look "good" locReaction->Set_MaxExtraGoodTracks(3); // Highly Recommended: Enable ROOT TTree output for this DReaction locReaction->Enable_TTreeOutput("tree_sdobbs_jpsigamma.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** sdobbs_jpsigamma Pre-Combo Custom Cuts *************************************************/ locReaction->Set_InvariantMassCut(Jpsi, 2.2, 4.0); locReaction->Set_InvariantMassCut(Chi_c1, 3.2, 4.5); locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.1, 0.1)); /**************************************************** sdobbs_jpsigamma Analysis Actions ****************************************************/ // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // CUT PID // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // locReaction->Add_AnalysisAction(new DCutAction_EachPIDFOM(locReaction, 5.73303E-7)); // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.0, Proton, SYS_TOF)); //cut at delta-t +/- 1.0 //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDTimingBeta(locReaction, 0.0, 0.9, Neutron, SYS_BCAL)); //min/max beta cut for neutrons // locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 1.0, Electron, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Electron, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Electron, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 1.0, Positron, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Positron, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Positron, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 3.0, Gamma, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Gamma, SYS_FCAL)); locReaction->Add_AnalysisAction(new DHistogramAction_MissingTransverseMomentum(locReaction, false, 1000, 0.0, 1.0)); //false: fill histograms with measured particle data locReaction->Add_AnalysisAction(new DCutAction_TransverseMomentum(locReaction, 0.4)); //Max Missing Pt of 0.4 GeV /********************************************** KINEMATIC FIT IS PERFORMED HERE *********************************************************/ locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction,0.05)); //See what results look like pre-KF //locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0000005)); //Requires 5E-7 kin fit FOM locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.)); //Requires convergence locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, false, 200, 2.0, 4,"Jpsi_IM_prekin")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, true, 200, 2.0, 4,"Jpsi_IM_kinfit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Chi_c1, false, 150, 3.0, 4.5,"ChicJ_IM_prekin")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Chi_c1, true, 150, 3.0, 4.5,"ChicJ_IM_kinfit")); // Kinematics locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false)); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true, "KinFit")); //true: kinematic-fit data locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); _data.push_back(locReaction); //Register the DReaction with the factory /************************************************** sdobbs_jpsipipi Reaction Definition *************************************************/ locReaction = new DReaction("sdobbs_jpsipipi"); //Required: DReactionSteps to specify the channel and decay chain you want to study //Particles are of type Particle_t, an enum defined in sim-recon/src/libraries/include/particleType.h // Reaction: g p -> p psi(2S), psi(2S) -> J/psi pi+ pi- locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Gamma); locReactionStep->Set_TargetParticleID(Proton); locReactionStep->Add_FinalParticleID(Psi2s); locReactionStep->Add_FinalParticleID(Proton); //proton reconstructed locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // psi(2S) -> J/psi pi+ pi- locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Psi2s); locReactionStep->Add_FinalParticleID(PiPlus); locReactionStep->Add_FinalParticleID(PiMinus); locReactionStep->Add_FinalParticleID(Jpsi); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //Does not constrain Chi_cJ mass. locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // Jpsi -> e+e- locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Jpsi); locReactionStep->Add_FinalParticleID(Electron); locReactionStep->Add_FinalParticleID(Positron); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //Does not constrain Jpsi mass. locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** sdobbs_jpsipipi Control Settings ****************************************************/ //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit locReaction->Set_KinFitType(d_P4AndVertexFit); locReaction->Set_EventStoreSkims("jpsi_ee,2q+,2q-"); //boolean-AND of skims //This skim finds >=2+ tracks, >=1- track, and uses jpsi skim cuts: //Jpsi skim: invariant mass cut from 1.5 to 4 //Jpsi skim: measured E/p cut from 0.65 to 1.4 in both e- and e+ candidate. // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // Optional: When generating particle combinations, reject all photon candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinPhotonPIDFOM(5.73303E-7); // Optional: When generating particle combinations, reject all charged track candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinChargedPIDFOM(5.73303E-7); // Highly Recommended: Cut on number of extra "good" tracks. "Good" tracks are ones that survive the "PreSelect" (or user custom) factory. // Important: Keep cut large: Can have many ghost and accidental tracks that look "good" locReaction->Set_MaxExtraGoodTracks(3); // Highly Recommended: Enable ROOT TTree output for this DReaction locReaction->Enable_TTreeOutput("tree_sdobbs_jpsipipi.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** sdobbs_jpsipipi Pre-Combo Custom Cuts *************************************************/ locReaction->Set_InvariantMassCut(Jpsi, 2.2, 4.0); locReaction->Set_InvariantMassCut(Psi2s, 3.2, 4.5); locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.1, 0.1)); /**************************************************** sdobbs_jpsipipi Analysis Actions ****************************************************/ // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // CUT PID // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // locReaction->Add_AnalysisAction(new DCutAction_EachPIDFOM(locReaction, 5.73303E-7)); // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.0, Proton, SYS_TOF)); //cut at delta-t +/- 1.0 //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDTimingBeta(locReaction, 0.0, 0.9, Neutron, SYS_BCAL)); //min/max beta cut for neutrons // locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 1.0, Electron, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Electron, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Electron, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 1.0, Positron, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Positron, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Positron, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.0, PiPlus, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiPlus, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.0, PiMinus, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiMinus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiMinus, SYS_FCAL)); locReaction->Add_AnalysisAction(new DHistogramAction_MissingTransverseMomentum(locReaction, false, 1000, 0.0, 1.0)); //false: fill histograms with measured particle data locReaction->Add_AnalysisAction(new DCutAction_TransverseMomentum(locReaction, 0.4)); //Max Missing Pt of 0.4 GeV /********************************************** KINEMATIC FIT IS PERFORMED HERE *********************************************************/ locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction,0.05)); //See what results look like pre-KF //locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0000005)); //Requires 5E-7 kin fit FOM locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.)); //Requires convergence locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, false, 200, 2.0, 4,"Jpsi_IM_prekin")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, true, 200, 2.0, 4,"Jpsi_IM_kinfit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Psi2s, false, 150, 3.0, 4.5,"Psi2s_IM_prekin")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Psi2s, true, 150, 3.0, 4.5,"Psi2s_IM_kinfit")); // Kinematics locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false)); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true, "KinFit")); //true: kinematic-fit data locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); _data.push_back(locReaction); //Register the DReaction with the factory /************************************************** sdobbs_kskpi Reaction Definition *************************************************/ locReaction = new DReaction("sdobbs_kskpi"); //Required: DReactionSteps to specify the channel and decay chain you want to study //Particles are of type Particle_t, an enum defined in sim-recon/src/libraries/include/particleType.h // Reaction: g p -> p Ks K- pi+ (e.g. eta_c) locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Gamma); locReactionStep->Set_TargetParticleID(Proton); locReactionStep->Add_FinalParticleID(KShort); locReactionStep->Add_FinalParticleID(KMinus); locReactionStep->Add_FinalParticleID(PiPlus); locReactionStep->Add_FinalParticleID(Proton); //proton reconstructed locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // Ks -> pi+ pi- locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(KShort); locReactionStep->Add_FinalParticleID(PiPlus); locReactionStep->Add_FinalParticleID(PiMinus); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //Does not constrain mass. locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** sdobbs_kskpi Control Settings ****************************************************/ //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit locReaction->Set_KinFitType(d_P4AndVertexFit); locReaction->Set_EventStoreSkims("2q+,2q-,ks_2piq"); //boolean-AND of skims // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // Optional: When generating particle combinations, reject all photon candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinPhotonPIDFOM(5.73303E-7); // Optional: When generating particle combinations, reject all charged track candidates with a PID confidence level < 5.73303E-7 (+/- 5-sigma) // Make sure PID errors are calculated correctly before using. //locReaction->Set_MinChargedPIDFOM(5.73303E-7); // Highly Recommended: Cut on number of extra "good" tracks. "Good" tracks are ones that survive the "PreSelect" (or user custom) factory. // Important: Keep cut large: Can have many ghost and accidental tracks that look "good" locReaction->Set_MaxExtraGoodTracks(3); // Highly Recommended: Enable ROOT TTree output for this DReaction locReaction->Enable_TTreeOutput("tree_sdobbs_kskpi.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** sdobbs_kskpi Pre-Combo Custom Cuts *************************************************/ //locReaction->Set_InvariantMassCut(KShort, 0.3, 0.7); locReaction->Set_InvariantMassCut(KShort, 0.4, 0.6); locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.1, 0.1)); /**************************************************** sdobbs_kskpi Analysis Actions ****************************************************/ // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // CUT PID // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // locReaction->Add_AnalysisAction(new DCutAction_EachPIDFOM(locReaction, 5.73303E-7)); // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 1.0, Proton, SYS_TOF)); //cut at delta-t +/- 1.0 //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDTimingBeta(locReaction, 0.0, 0.9, Neutron, SYS_BCAL)); //min/max beta cut for neutrons // locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, Proton, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 0.75, KMinus, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, KMinus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.0, KMinus, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.0, PiPlus, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiPlus, SYS_FCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.0, PiMinus, SYS_TOF)); //false: measured data, locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiMinus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction,false, 2.5, PiMinus, SYS_FCAL)); locReaction->Add_AnalysisAction(new DHistogramAction_MissingTransverseMomentum(locReaction, false, 1000, 0.0, 1.0)); //false: fill histograms with measured particle data locReaction->Add_AnalysisAction(new DCutAction_TransverseMomentum(locReaction, 0.4)); //Max Missing Pt of 0.4 GeV /********************************************** KINEMATIC FIT IS PERFORMED HERE *********************************************************/ locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction,0.05)); //See what results look like pre-KF //locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0000005)); //Requires 5E-7 kin fit FOM locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.)); //Requires convergence locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, false, 200, 0.3, 0.7,"Ks_IM_prekin")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Jpsi, true, 200, 0.3, 0.7,"Ks_IM_kinfit")); // Kinematics locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, false)); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true, "KinFit")); //true: kinematic-fit data locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); _data.push_back(locReaction); //Register the DReaction with the factory return NOERROR; } //------------------ // fini //------------------ jerror_t DReaction_factory_sdobbs_ccbar::fini(void) { for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i) delete dReactionStepPool[loc_i]; //cleanup memory return NOERROR; }