// $Id$ // // File: DReaction_factory_EtaPrm_MK.cc // Created: Tue Jun 14 14:17:35 EDT 2016 // Creator: mkamel (on Linux ifarm1401 2.6.32-431.el6.x86_64 x86_64) // Last Modified July 2017 #include "DReaction_factory_EtaPrm_MK.h" //------------------ // brun //------------------ jerror_t DReaction_factory_EtaPrm_MK::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_EtaPrm_MK::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 { /************************************************** EtaPrm_MK Reaction Definition *************************************************/ /********************************************** g,p -> etaprm, p && etaprm-> pi+ pi- Gamma*********************************************/ locReaction = new DReaction("EtaPrm_MK"); //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 //Example: g, p -> EtaPrime, (p) locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Gamma); locReactionStep->Set_TargetParticleID(Proton); locReactionStep->Add_FinalParticleID(EtaPrime); locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak //Example: EtaPrime -> pi+, pi-, gamma locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(EtaPrime); locReactionStep->Add_FinalParticleID(PiPlus); locReactionStep->Add_FinalParticleID(PiMinus); locReactionStep->Add_FinalParticleID(Gamma); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** EtaPrm_MK Control Settings ****************************************************/ // Recommended: Type of kinematic fit to perform (default is d_NoFit) //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit //P4 fits automatically constrain decaying particle masses, unless they are manually disabled locReaction->Set_KinFitType(d_P4AndVertexFit); // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // This will skip creating particle combos for events that aren't in the skims you list // Query should be comma-separated list of skims to boolean-AND together locReaction->Set_EventStoreSkims("etaprm_2piqg"); //boolean-AND of skims // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // 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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction locReaction->Enable_TTreeOutput("tree_EtaPrm_MK.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** EtaPrm_MK Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(Pi0, 0.0, 0.3); locReaction->Set_InvariantMassCut(EtaPrime, 0.6, 1.3); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Example: Missing mass of proton locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); /**************************************************** EtaPrm_MK Analysis Actions ****************************************************/ // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); //**************************** // Pre Kinematic Fit ***** // *************************** // Fiducial PID delta T cuts //Proton locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_FCAL)); //false: measured data // Pi+ locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiPlus, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiPlus, SYS_FCAL)); //false: measured data // Pi- locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiMinus, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiMinus, SYS_FCAL)); //false: measured data // Gamma locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 4.0, Gamma, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Gamma, SYS_FCAL)); //false: measured data // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // 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 // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DCustomAction_dEdxCut(locReaction, false)); //false: focus on keeping signal locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostPIDcut")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); //**************************** // Kinematic Fit Results ***** // *************************** locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, -1.0)); //require kinematic fit converges // Measured Histograms locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostKinFit_measured")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // KinFit Histograms locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, true, 400, 0.0, 2.0, "EtaPrime_PostKinFit")); // Kinematics locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); _data.push_back(locReaction); //Register the DReaction with the factory } // { /************************************************** Eta_MKamel Reaction Definition *************************************************/ /********************************************** g,p -> eta, p && eta-> pi+ pi- Pi0*********************************************/ // locReaction = new DReaction("Eta_MKamel"); // //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 // //Example: g, p -> EtaPrime, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(Eta); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: EtaPrime -> pi+, pi-, gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Eta); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: Pi0 -> gamma, gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** Eta_MKamel Control Settings ****************************************************/ // Recommended: Type of kinematic fit to perform (default is d_NoFit) //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit //P4 fits automatically constrain decaying particle masses, unless they are manually disabled // locReaction->Set_KinFitType(d_P4AndVertexFit); // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // This will skip creating particle combos for events that aren't in the skims you list // Query should be comma-separated list of skims to boolean-AND together // locReaction->Set_EventStoreSkims("eta_3piq"); //boolean-AND of skims // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // 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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_Eta_MKamel.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** Eta_MKamel Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(Eta, 0.3, 0.8); // locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); /**************************************************** Eta_MKamel Analysis Actions ****************************************************/ // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); //**************************** // Pre Kinematic Fit ***** // *************************** // Fiducial PID delta T cuts //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 5.0, Gamma, SYS_FCAL)); //false: measured data // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // 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 // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, false, 400, 0.0, 2.0, "eta_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, false, 400, 0.0, 2.0, "eta_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, true, 400, 0.0, 2.0, "eta_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, true, 60, 0.0, 0.3, "Pi0_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); // _data.push_back(locReaction); //Register the DReaction with the factory // } { /************************************************** EtaPrm_PipPimEta_2gamma Reaction Definition *************************************************/ /***************************** g,p -> etaprm, p && etaprm-> pi+ pi- Eta && Eta-> 2gamma*********************************************/ locReaction = new DReaction("EtaPrm_PipPimEta_2gamma"); //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 //Example: g, p -> EtaPrime, (p) locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Gamma); locReactionStep->Set_TargetParticleID(Proton); locReactionStep->Add_FinalParticleID(EtaPrime); locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak //Example: EtaPrime -> pi+, pi-, Eta locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(EtaPrime); locReactionStep->Add_FinalParticleID(PiPlus); locReactionStep->Add_FinalParticleID(PiMinus); locReactionStep->Add_FinalParticleID(Eta); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak //Example: EtaPrime -> gamma, gamma locReactionStep = new DReactionStep(); locReactionStep->Set_InitialParticleID(Eta); locReactionStep->Add_FinalParticleID(Gamma); locReactionStep->Add_FinalParticleID(Gamma); locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locReactionStep); dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak /**************************************************** EtaPrm_PipPimEta_2gamma Control Settings ****************************************************/ // Recommended: Type of kinematic fit to perform (default is d_NoFit) //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit //P4 fits automatically constrain decaying particle masses, unless they are manually disabled locReaction->Set_KinFitType(d_P4AndVertexFit); // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // This will skip creating particle combos for events that aren't in the skims you list // Query should be comma-separated list of skims to boolean-AND together locReaction->Set_EventStoreSkims("etaprm_2piqeta_2g,eta_2g"); //boolean-AND of skims // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // 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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction locReaction->Enable_TTreeOutput("tree_EtaPrm_PipPimEta_2gamma.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change /************************************************** EtaPrm_PipPimEta_2gamma Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(Pi0, 0.0, 0.3); locReaction->Set_InvariantMassCut(EtaPrime, 0.6, 1.3); locReaction->Set_InvariantMassCut(Eta, 0.3, 0.8); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Example: Missing mass of proton locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); /**************************************************** EtaPrm_PipPimEta_2gamma Analysis Actions ****************************************************/ // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); //**************************** // Pre Kinematic Fit ***** // *************************** // Fiducial PID delta T cuts //Proton locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Proton, SYS_FCAL)); //false: measured data // Pi+ locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiPlus, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiPlus, SYS_FCAL)); //false: measured data // Pi- locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiMinus, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, PiMinus, SYS_FCAL)); //false: measured data // Gamma locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 4.0, Gamma, SYS_BCAL)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.5, Gamma, SYS_FCAL)); //false: measured data // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // 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 // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DCustomAction_dEdxCut(locReaction, false)); //false: focus on keeping signal locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostPIDcut")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , false, 200, 0.0, 1.0, "Eta_PostPIDcut")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); //**************************** // Kinematic Fit Results ***** // *************************** locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, -1.0)); //require kinematic fit converges // Measured Histograms locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostKinFit_measured")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , false, 200, 0.0, 1.0, "Eta_PostKinFit_measured")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // KinFit Histograms locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, true, 400, 0.0, 2.0, "EtaPrime_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , true, 200, 0.0, 1.0, "Eta_PostKinFit")); // Kinematics locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); _data.push_back(locReaction); //Register the DReaction with the factory } // { /************************************************** EtaPrm_PipPimEta_3Pions Reaction Definition *************************************************/ /***************************** g,p -> etaprm, p && etaprm-> pi+ pi- Eta && Eta-> 2gamma*********************************************/ // locReaction = new DReaction("EtaPrm_PipPimEta_3Pions"); // //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 // //Example: g, p -> EtaPrime, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: EtaPrime -> pi+, pi-, Eta // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Eta); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: Eta -> pi+, pi-, Pi0 // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Eta); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: Pi0 -> gamma, gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // /**************************************************** EtaPrm_PipPimEta_3Pions Control Settings ****************************************************/ // // Recommended: Type of kinematic fit to perform (default is d_NoFit) // //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h // //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit // //P4 fits automatically constrain decaying particle masses, unless they are manually disabled // locReaction->Set_KinFitType(d_P4AndVertexFit); // // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // // This will skip creating particle combos for events that aren't in the skims you list // // Query should be comma-separated list of skims to boolean-AND together // locReaction->Set_EventStoreSkims("etaprm_2piqeta_3piq"); //boolean-AND of skims // // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // // 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(4); // // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_EtaPrm_PipPimEta_3Pions.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change // /************************************************** EtaPrm_PipPimEta_3Pions Pre-Combo Custom Cuts *************************************************/ // // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(EtaPrime, 0.6, 1.3); // locReaction->Set_InvariantMassCut(Eta, 0.3, 0.8); // locReaction->Set_InvariantMassCut(Pi0, 0.0, 0.3); // // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); // /**************************************************** EtaPrm_PipPimEta_3Pions Analysis Actions ****************************************************/ // // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. // //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination // //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h // //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // //**************************** // // Pre Kinematic Fit ***** // // *************************** // // Fiducial PID delta T cuts // //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 5.0, Gamma, SYS_FCAL)); //false: measured data // // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , false, 400, 0.0, 2.0, "Eta_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , false, 400, 0.0, 2.0, "Eta_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, true, 400, 0.0, 2.0, "EtaPrime_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta , true, 400, 0.0, 2.0, "Eta_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); // _data.push_back(locReaction); //Register the DReaction with the factory // } // { /************************************************** omega_MKamel Reaction Definition *************************************************/ /********************************************** g,p -> omega, p && omega-> pi+ pi- pi0*********************************************/ // locReaction = new DReaction("omega_MKamel"); // //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 // //Example: g, p -> omega, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(omega); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: omega -> pi+, pi-, pi0 // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(omega); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: pi0 -> 2gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // /**************************************************** omega_MKamel Control Settings ****************************************************/ // // Recommended: Type of kinematic fit to perform (default is d_NoFit) // //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h // //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit // //P4 fits automatically constrain decaying particle masses, unless they are manually disabled // locReaction->Set_KinFitType(d_P4AndVertexFit); // // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // // This will skip creating particle combos for events that aren't in the skims you list // // Query should be comma-separated list of skims to boolean-AND together // locReaction->Set_EventStoreSkims("omega_3piq"); //boolean-AND of skims // // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // // 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(4); // // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_omega_MKamel.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change // /************************************************** omega_MKamel Pre-Combo Custom Cuts *************************************************/ // // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(omega, 0.4, 1.2); // locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); // /**************************************************** omega_MKamel Analysis Actions ****************************************************/ // // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. // //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination // //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h // //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // //**************************** // // Pre Kinematic Fit ***** // // *************************** // // Fiducial PID delta T cuts // //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, Gamma, SYS_FCAL)); //false: measured data // // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // // 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 // // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DCustomAction_dEdxCut(locReaction, false)); //false: focus on keeping signal // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 400, 0.0, 2.0, "omega_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, -1.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 400, 0.0, 2.0, "omega_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostKinFit_Measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 400, 0.0, 2.0, "omega_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); // _data.push_back(locReaction); //Register the DReaction with the factory // } // { // /************************************************** omega_pi0_gamma_MKamel Reaction Definition *************************************************/ // /********************************************** g,p -> omega, p && omega-> pi+ pi- pi0*********************************************/ // locReaction = new DReaction("omega_pi0_gamma_MKamel"); // //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 // //Example: g, p -> omega, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(omega); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: omega -> pi0, Gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(omega); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: pi0 -> 2gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // /**************************************************** omega_pi0_gamma_MKamel Control Settings ****************************************************/ // // Recommended: Type of kinematic fit to perform (default is d_NoFit) // //fit types are of type DKinFitType, an enum defined in sim-recon/src/libraries/ANALYSIS/DReaction.h // //Options: d_NoFit (default), d_P4Fit, d_VertexFit, d_P4AndVertexFit // //P4 fits automatically constrain decaying particle masses, unless they are manually disabled // locReaction->Set_KinFitType(d_P4AndVertexFit); // // Highly Recommended: Set EventStore skim query (use with "eventstore" source) // // This will skip creating particle combos for events that aren't in the skims you list // // Query should be comma-separated list of skims to boolean-AND together // locReaction->Set_EventStoreSkims("omega_pi0g"); //boolean-AND of skims // // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // // 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(4); // // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_omega_pi0_gamma_MKamel.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change // /************************************************** omega_pi0_gamma_MKamel Pre-Combo Custom Cuts *************************************************/ // // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(omega, 0.4, 1.2); // locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.05, 0.05)); // /**************************************************** omega_pi0_gamma_MKamel Analysis Actions ****************************************************/ // // Recommended: Analysis actions automatically performed by the DAnalysisResults factories to histogram useful quantities. // //These actions are executed sequentially, and are executed on each surviving (non-cut) particle combination // //Pre-defined actions can be found in ANALYSIS/DHistogramActions_*.h and ANALYSIS/DCutActions.h // //If a histogram action is repeated, it should be created with a unique name (string) to distinguish them // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // //**************************** // // Pre Kinematic Fit ***** // // *************************** // // Fiducial PID delta T cuts // //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 5.0, Gamma, SYS_FCAL)); //false: measured data // // SYS_TOF, SYS_BCAL, SYS_FCAL, ...: DetectorSystem_t: Defined in libraries/include/GlueX.h // // 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 // // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 400, 0.0, 2.0, "omega_PostPIDcut")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostPIDcut")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, false, 400, 0.0, 2.0, "omega_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, omega, true, 400, 0.0, 2.0, "omega_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); // _data.push_back(locReaction); //Register the DReaction with the factory // } /**************************************************** Etaprime Pi0 ****************************************************/ /************************** g,p -> etaprm,Pi0, p && etaprm-> pi+ pi- Gamma & Pi0-> g,g ********************************/ // { // locReaction = new DReaction("Etaprime_Pi0"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown" // // locReaction->Set_EventStoreSkims("etaprm_2piqg,pi0,3q0"); //boolean-AND of skims // //Example: g, p -> EtaPrime,Pi0, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: EtaPrime -> pi+, pi-, gamma // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Pi0 -> 2 gammas // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // /**************************************************** etaprime_Pi0 Control Settings ****************************************************/ // // Recommended: Type of kinematic fit to perform (default is d_NoFit) // locReaction->Set_KinFitType(d_P4AndVertexFit); // //EventSTore Skim // locReaction->Set_EventStoreSkims("etaprm_2piqg"); //boolean-AND of skims // // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // // 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(4); // // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_Etaprime_Pi0.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change // /************************************************** etaprime_Pi0 Pre-Combo Custom Cuts *************************************************/ // // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // locReaction->Set_InvariantMassCut(EtaPrime, 0.6, 1.3); // // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.02, 0.02)); // /**************************************************** etaprime_Pi0 Analysis Actions ****************************************************/ // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // //**************************** // // Pre Kinematic Fit ***** // // *************************** // // Fiducial PID delta T cuts // //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 5.0, Gamma, SYS_FCAL)); //false: measured data // // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PreKinFit")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, 0.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, true, 400, 0.0, 2.0, "EtaPrime_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, true, 60, 0.0, 0.3, "Pi0_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured data // locReaction->Add_AnalysisAction(new DHistogramAction_TrackVertexComparison(locReaction)); // _data.push_back(locReaction); //Register the DReaction with the factory // } /**************************************************** Etaprime Pi0 ****************************************************/ /****************** g,p -> etaprm,Pi0, p && etaprm-> pi+ pi- eta & Pi0-> g,g & eta-> g,g ******************************/ // { // locReaction = new DReaction("Etaprime_Pi0_Eta2gamma"); //needs to be a unique name for each DReaction object, CANNOT (!) be "Thrown" // // locReaction->Set_EventStoreSkims("etaprm_2piqg,pi0,3q0"); //boolean-AND of skims // //Example: g, p -> EtaPrime,Pi0, (p) // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Gamma); // locReactionStep->Set_TargetParticleID(Proton); // locReactionStep->Add_FinalParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Proton, false); //true: proton missing // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Example: EtaPrime -> pi+, pi-, Eta // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(EtaPrime); // locReactionStep->Add_FinalParticleID(PiPlus); // locReactionStep->Add_FinalParticleID(PiMinus); // locReactionStep->Add_FinalParticleID(Eta); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Pi0 -> 2 gammas // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Pi0); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // //Eta -> 2 gammas // locReactionStep = new DReactionStep(); // locReactionStep->Set_InitialParticleID(Eta); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Add_FinalParticleID(Gamma); // locReactionStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless // locReaction->Add_ReactionStep(locReactionStep); // dReactionStepPool.push_back(locReactionStep); //register so will be deleted later: prevent memory leak // /**************************************************** etaprime_Pi0 Control Settings ****************************************************/ // // Recommended: Type of kinematic fit to perform (default is d_NoFit) // locReaction->Set_KinFitType(d_P4AndVertexFit); // //EventSTore Skim // locReaction->Set_EventStoreSkims("etaprm_2piqeta_2g"); //boolean-AND of skims etaprm_2piqeta_2g // // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch (delta_t > 1.002 ns) // locReaction->Set_MaxPhotonRFDeltaT(0.5*dBeamBunchPeriod); //should be minimum cut value // // 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(4); // // Highly Recommended: Enable ROOT TTree output for this DReaction // locReaction->Enable_TTreeOutput("tree_Etaprime_Pi0_Eta2gamma.root"); //string is file name (must end in ".root"!!): doen't need to be unique, feel free to change // /************************************************** etaprime_Pi0 Pre-Combo Custom Cuts *************************************************/ // // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction // // Example: pi0 -> g, g cut // locReaction->Set_InvariantMassCut(EtaPrime, 0.6, 1.3); // locReaction->Set_InvariantMassCut(Eta, 0.3, 0.8); // locReaction->Set_InvariantMassCut(Pi0, 0.05, 0.22); // // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // // Example: Missing mass of proton // locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.03, 0.03)); // /**************************************************** etaprime_Pi0 Analysis Actions ****************************************************/ // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction)); // //**************************** // // Pre Kinematic Fit ***** // // *************************** // // Fiducial PID delta T cuts // //Proton // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Proton, SYS_FCAL)); //false: measured data // // Pi+ // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiPlus, SYS_FCAL)); //false: measured data // // Pi- // 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)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, PiMinus, SYS_FCAL)); //false: measured data // // Gamma // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 3.0, Gamma, SYS_BCAL)); //false: measured data // locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 5.0, Gamma, SYS_FCAL)); //false: measured data // // HISTOGRAM MASSES //false/true: measured/kinfit data // locReaction->Add_AnalysisAction(new DCustomAction_dEdxCut(locReaction, false)); //false: focus on keeping signal // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, false, 200, 0.0, 1.0, "Eta_PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PreKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PreKinFit")); // //**************************** // // Kinematic Fit Results ***** // // *************************** // locReaction->Add_AnalysisAction(new DHistogramAction_KinFitResults(locReaction, 0.05)); //5% confidence level cut on pull histograms only // locReaction->Add_AnalysisAction(new DCutAction_KinFitFOM(locReaction, -1.0)); //require kinematic fit converges // // Measured Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, false, 400, 0.0, 2.0, "EtaPrime_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, false, 200, 0.0, 1.0, "Eta_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, false, 60, 0.0, 0.3, "Pi0_PostKinFit_measured")); // locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 40, -0.1, 0.1, "PostKinFit_measured")); // // KinFit Histograms // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, EtaPrime, true, 400, 0.0, 2.0, "EtaPrime_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Eta, true, 200, 0.0, 1.0, "Eta_PostKinFit")); // locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Pi0, true, 60, 0.0, 0.3, "Pi0_PostKinFit")); // // Kinematics // locReaction->Add_AnalysisAction(new DHistogramAction_ParticleComboKinematics(locReaction, true,"KinFit")); //false: measured 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_EtaPrm_MK::fini(void) { for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i) delete dReactionStepPool[loc_i]; //cleanup memory return NOERROR; }