// $Id$ // // File: DReaction_factory_OmegaBaryon.cc // Created: Mon 19 Jun 15:11:41 BST 2017 // Creator: pauli (on Linux npc58.physics.gla.ac.uk 4.1.13-100.fc21.x86_64 x86_64) // #include "DReaction_factory_OmegaBaryon.h" //------------------ // brun //------------------ jerror_t DReaction_factory_OmegaBaryon::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_OmegaBaryon::evnt(JEventLoop* locEventLoop, uint64_t locEventNumber) { // Make as many DReaction objects as desired DReaction* locReaction = NULL; //create with a unique name for each DReaction object. CANNOT (!) be "Thrown" DReactionStep* locInitStep = NULL; DReactionStep* locKShortStep = NULL; DReactionStep* locOmegaStep = NULL; DReactionStep* locLambdaStep = NULL; // DOCUMENTATION: // ANALYSIS library: https://halldweb1.jlab.org/wiki/index.php/GlueX_Analysis_Software // DReaction factory: https://halldweb1.jlab.org/wiki/index.php/Analysis_DReaction /************************************************************************************************************************************/ /************************************************** OmegaBaryon Reaction Definition *************************************************/ /************************************************************************************************************************************/ locReaction = new DReaction("OmegaBaryon"); //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 //g, p -> K+, K+, KS, Omega locInitStep = new DReactionStep(); locInitStep->Set_InitialParticleID(Gamma); locInitStep->Set_TargetParticleID(Proton); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KShort); locInitStep->Add_FinalParticleID(OmegaMinus); locReaction->Add_ReactionStep(locInitStep); dReactionStepPool.push_back(locInitStep); //register so will be deleted later: prevent memory leak //KS -> pi+, pi- locKShortStep = new DReactionStep(); locKShortStep->Set_InitialParticleID(KShort); locKShortStep->Add_FinalParticleID(PiPlus); locKShortStep->Add_FinalParticleID(PiMinus); locKShortStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locKShortStep); dReactionStepPool.push_back(locKShortStep); //register so will be deleted later: prevent memory leak //Omega -> Lambda, K- locOmegaStep = new DReactionStep(); locOmegaStep->Set_InitialParticleID(OmegaMinus); locOmegaStep->Add_FinalParticleID(Lambda); locOmegaStep->Add_FinalParticleID(KMinus); locOmegaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locOmegaStep); dReactionStepPool.push_back(locOmegaStep); //register so will be deleted later: prevent memory leak //Lambda -> pi-, p locLambdaStep = new DReactionStep(); locLambdaStep->Set_InitialParticleID(Lambda); locLambdaStep->Add_FinalParticleID(PiMinus); locLambdaStep->Add_FinalParticleID(Proton); locLambdaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locLambdaStep); dReactionStepPool.push_back(locLambdaStep); //register so will be deleted later: prevent memory leak /**************************************************** OmegaBaryon Control Settings ****************************************************/ // 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("myskim1,myskim2,myskim3"); //boolean-AND of skims // 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: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(1.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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction // string is file name (must end in ".root"!!): doen't need to be unique, feel free to change locReaction->Enable_TTreeOutput("tree_OmegaBaryon.root", false); //true/false: do/don't save unused hypotheses /************************************************** OmegaBaryon Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction locReaction->Set_InvariantMassCut(KShort, 0.350, 0.650); locReaction->Set_InvariantMassCut(Lambda, 0.900, 1.3); locReaction->Set_InvariantMassCut(OmegaMinus, 1.320, 2.220); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Missing mass locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.08, 0.08)); // Beam energy locReaction->Add_ComboPreSelectionAction(new DCutAction_BeamEnergy(locReaction,false,4.8,15)); /**************************************************** OmegaBaryon 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 // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // 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, 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, 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 DCutAction_PIDDeltaT(locReaction, false, 0.75, KPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, KPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, KPlus, 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_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KMinus)); // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.08, 0.08, "PreKinFit")); // KINEMATIC FIT 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)); //0% confidence level cut //require kinematic fit converges // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.08, 0.08, "PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, true, 600, 0.35, 0.65, "KShort_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, true, 600, 0.9, 1.3, "Lambda_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, true, 600, 1.32, 2.22, "Omega_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, true, 1000, -0.08, 0.08, "PostKinFit_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)); // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); _data.push_back(locReaction); //Register the DReaction with the factory /*************************************************************************************************************************************************/ /************************************************** OmegaBaryonMissingProton Reaction Definition *************************************************/ /*************************************************************************************************************************************************/ locReaction = new DReaction("OmegaBaryonMissingProton"); //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 //g, p -> K+, K+, KS, Omega locInitStep = new DReactionStep(); locInitStep->Set_InitialParticleID(Gamma); locInitStep->Set_TargetParticleID(Proton); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KShort); locInitStep->Add_FinalParticleID(OmegaMinus); locReaction->Add_ReactionStep(locInitStep); dReactionStepPool.push_back(locInitStep); //register so will be deleted later: prevent memory leak //KS -> pi+, pi- locKShortStep = new DReactionStep(); locKShortStep->Set_InitialParticleID(KShort); locKShortStep->Add_FinalParticleID(PiPlus); locKShortStep->Add_FinalParticleID(PiMinus); locKShortStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locKShortStep); dReactionStepPool.push_back(locKShortStep); //register so will be deleted later: prevent memory leak //Omega -> Lambda, K- locOmegaStep = new DReactionStep(); locOmegaStep->Set_InitialParticleID(OmegaMinus); locOmegaStep->Add_FinalParticleID(Lambda); locOmegaStep->Add_FinalParticleID(KMinus); locOmegaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locOmegaStep); dReactionStepPool.push_back(locOmegaStep); //register so will be deleted later: prevent memory leak //Lambda -> pi-, p locLambdaStep = new DReactionStep(); locLambdaStep->Set_InitialParticleID(Lambda); locLambdaStep->Add_FinalParticleID(PiMinus); locLambdaStep->Add_FinalParticleID(Proton,true); //missing proton locLambdaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locLambdaStep); dReactionStepPool.push_back(locLambdaStep); //register so will be deleted later: prevent memory leak /**************************************************** OmegaBaryon Control Settings ****************************************************/ // 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("myskim1,myskim2,myskim3"); //boolean-AND of skims // 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: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(1.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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction // string is file name (must end in ".root"!!): doen't need to be unique, feel free to change locReaction->Enable_TTreeOutput("tree_OmegaBaryon.root", false); //true/false: do/don't save unused hypotheses /************************************************** OmegaBaryon Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction locReaction->Set_InvariantMassCut(KShort, 0.350, 0.650); locReaction->Set_InvariantMassCut(Lambda, 0.900, 1.3); locReaction->Set_InvariantMassCut(OmegaMinus, 1.320, 2.220); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Missing mass locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMass(locReaction, false, 0.8, 1.1)); // Beam energy locReaction->Add_ComboPreSelectionAction(new DCutAction_BeamEnergy(locReaction,false,4.8,15)); /**************************************************** OmegaBaryon 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 // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // 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, 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, 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 DCutAction_PIDDeltaT(locReaction, false, 0.75, KPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, KPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, KPlus, 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_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KMinus)); // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, false, 1000, 0.8, 1.1, "PreKinFit")); // KINEMATIC FIT 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)); //0% confidence level cut //require kinematic fit converges // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, false, 1000, 0.8, 1.1, "PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, true, 600, 0.35, 0.65, "KShort_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, true, 600, 0.9, 1.3, "Lambda_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, true, 600, 1.32, 2.22, "Omega_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, true, 1000, 0.8, 1.1, "PostKinFit_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)); // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); _data.push_back(locReaction); //Register the DReaction with the factory /*************************************************************************************************************************************************/ /************************************************** OmegaBaryonMissingProton Reaction Definition *************************************************/ /*************************************************************************************************************************************************/ locReaction = new DReaction("OmegaBaryonMissingMass"); //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 //g, p -> K+, K+, KS, Omega locInitStep = new DReactionStep(); locInitStep->Set_InitialParticleID(Gamma); locInitStep->Set_TargetParticleID(Proton); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KShort); locInitStep->Add_FinalParticleID(Unknown,true); locReaction->Add_ReactionStep(locInitStep); dReactionStepPool.push_back(locInitStep); //register so will be deleted later: prevent memory leak //KS -> pi+, pi- locKShortStep = new DReactionStep(); locKShortStep->Set_InitialParticleID(KShort); locKShortStep->Add_FinalParticleID(PiPlus); locKShortStep->Add_FinalParticleID(PiMinus); locKShortStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locKShortStep); dReactionStepPool.push_back(locKShortStep); //register so will be deleted later: prevent memory leak /**************************************************** OmegaBaryon Control Settings ****************************************************/ // 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("myskim1,myskim2,myskim3"); //boolean-AND of skims // 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: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(1.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 // string is file name (must end in ".root"!!): doen't need to be unique, feel free to change locReaction->Enable_TTreeOutput("tree_OmegaBaryon.root", false); //true/false: do/don't save unused hypotheses /************************************************** OmegaBaryon Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction locReaction->Set_InvariantMassCut(KShort, 0.350, 0.650); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Missing mass locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMass(locReaction, false, 1.2, 2.2)); // Beam energy locReaction->Add_ComboPreSelectionAction(new DCutAction_BeamEnergy(locReaction,false,4.8,15)); /**************************************************** OmegaBaryon 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 // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // 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, 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 DCutAction_PIDDeltaT(locReaction, false, 0.75, KPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, KPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, KPlus, 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_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KMinus)); // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, false, 1000, 1.2, 2.2, "PreKinFit")); // KINEMATIC FIT 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)); //0% confidence level cut //require kinematic fit converges // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, false, 1000, 1.2, 2.2, "PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, true, 600, 0.35, 0.65, "KShort_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMass(locReaction, true, 1000, 1.2, 2.2, "PostKinFit_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)); // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); _data.push_back(locReaction); //Register the DReaction with the factory /************************************************************************************************************************************/ /************************************************** OmegaBaryon Reaction Definition *************************************************/ /************************************************************************************************************************************/ locReaction = new DReaction("OmegaBaryon_noKinFit"); //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 //g, p -> K+, K+, KS, Omega locInitStep = new DReactionStep(); locInitStep->Set_InitialParticleID(Gamma); locInitStep->Set_TargetParticleID(Proton); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KShort); locInitStep->Add_FinalParticleID(OmegaMinus); locReaction->Add_ReactionStep(locInitStep); dReactionStepPool.push_back(locInitStep); //register so will be deleted later: prevent memory leak //KS -> pi+, pi- locKShortStep = new DReactionStep(); locKShortStep->Set_InitialParticleID(KShort); locKShortStep->Add_FinalParticleID(PiPlus); locKShortStep->Add_FinalParticleID(PiMinus); locKShortStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locKShortStep); dReactionStepPool.push_back(locKShortStep); //register so will be deleted later: prevent memory leak //Omega -> Lambda, K- locOmegaStep = new DReactionStep(); locOmegaStep->Set_InitialParticleID(OmegaMinus); locOmegaStep->Add_FinalParticleID(Lambda); locOmegaStep->Add_FinalParticleID(KMinus); locOmegaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locOmegaStep); dReactionStepPool.push_back(locOmegaStep); //register so will be deleted later: prevent memory leak //Lambda -> pi-, p locLambdaStep = new DReactionStep(); locLambdaStep->Set_InitialParticleID(Lambda); locLambdaStep->Add_FinalParticleID(PiMinus); locLambdaStep->Add_FinalParticleID(Proton); locLambdaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locLambdaStep); dReactionStepPool.push_back(locLambdaStep); //register so will be deleted later: prevent memory leak /**************************************************** OmegaBaryon Control Settings ****************************************************/ // 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("myskim1,myskim2,myskim3"); //boolean-AND of skims // 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_NoFit); // Highly Recommended: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(1.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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction // string is file name (must end in ".root"!!): doen't need to be unique, feel free to change locReaction->Enable_TTreeOutput("tree_OmegaBaryon.root", false); //true/false: do/don't save unused hypotheses /************************************************** OmegaBaryon Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction locReaction->Set_InvariantMassCut(KShort, 0.350, 0.650); locReaction->Set_InvariantMassCut(Lambda, 0.900, 1.3); locReaction->Set_InvariantMassCut(OmegaMinus, 1.320, 2.220); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Missing mass locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.08, 0.08)); // Beam energy locReaction->Add_ComboPreSelectionAction(new DCutAction_BeamEnergy(locReaction,false,4.8,15)); /**************************************************** OmegaBaryon 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 // 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, 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, 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 DCutAction_PIDDeltaT(locReaction, false, 0.75, KPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, KPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, KPlus, 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_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KMinus)); // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.08, 0.08, "PreKinFit")); // KINEMATIC FIT // 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)); //0% confidence level cut //require kinematic fit converges // 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 /************************************************************************************************************************************/ /************************************************** OmegaBaryon Reaction Definition *************************************************/ /************************************************************************************************************************************/ locReaction = new DReaction("OmegaBaryon_Constrained"); //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 //g, p -> K+, K+, KS, Omega locInitStep = new DReactionStep(); locInitStep->Set_InitialParticleID(Gamma); locInitStep->Set_TargetParticleID(Proton); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KPlus); locInitStep->Add_FinalParticleID(KShort); locInitStep->Add_FinalParticleID(OmegaMinus); locReaction->Add_ReactionStep(locInitStep); dReactionStepPool.push_back(locInitStep); //register so will be deleted later: prevent memory leak //KS -> pi+, pi- locKShortStep = new DReactionStep(); locKShortStep->Set_InitialParticleID(KShort); locKShortStep->Add_FinalParticleID(PiPlus); locKShortStep->Add_FinalParticleID(PiMinus); locKShortStep->Set_KinFitConstrainInitMassFlag(true); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locKShortStep); dReactionStepPool.push_back(locKShortStep); //register so will be deleted later: prevent memory leak //Omega -> Lambda, K- locOmegaStep = new DReactionStep(); locOmegaStep->Set_InitialParticleID(OmegaMinus); locOmegaStep->Add_FinalParticleID(Lambda); locOmegaStep->Add_FinalParticleID(KMinus); locOmegaStep->Set_KinFitConstrainInitMassFlag(false); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locOmegaStep); dReactionStepPool.push_back(locOmegaStep); //register so will be deleted later: prevent memory leak //Lambda -> pi-, p locLambdaStep = new DReactionStep(); locLambdaStep->Set_InitialParticleID(Lambda); locLambdaStep->Add_FinalParticleID(PiMinus); locLambdaStep->Add_FinalParticleID(Proton); locLambdaStep->Set_KinFitConstrainInitMassFlag(true); //default: true //ignored if p4 not fit or is beam //phi, omega not constrained regardless locReaction->Add_ReactionStep(locLambdaStep); dReactionStepPool.push_back(locLambdaStep); //register so will be deleted later: prevent memory leak /**************************************************** OmegaBaryon Control Settings ****************************************************/ // 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("myskim1,myskim2,myskim3"); //boolean-AND of skims // 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: When generating particle combinations, reject all beam photons that match to a different RF bunch locReaction->Set_MaxPhotonRFDeltaT(1.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(4); // Highly Recommended: Enable ROOT TTree output for this DReaction // string is file name (must end in ".root"!!): doen't need to be unique, feel free to change locReaction->Enable_TTreeOutput("tree_OmegaBaryon.root", false); //true/false: do/don't save unused hypotheses /************************************************** OmegaBaryon Pre-Combo Custom Cuts *************************************************/ // Highly Recommended: Very loose invariant mass cuts, applied during DParticleComboBlueprint construction locReaction->Set_InvariantMassCut(KShort, 0.350, 0.650); locReaction->Set_InvariantMassCut(Lambda, 0.900, 1.3); locReaction->Set_InvariantMassCut(OmegaMinus, 1.320, 2.220); // Highly Recommended: Very loose DAnalysisAction cuts, applied just after creating the combination (before saving it) // Missing mass locReaction->Add_ComboPreSelectionAction(new DCutAction_MissingMassSquared(locReaction, false, -0.08, 0.08)); // Beam energy locReaction->Add_ComboPreSelectionAction(new DCutAction_BeamEnergy(locReaction,false,4.8,15)); /**************************************************** OmegaBaryon 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 // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PreKinFit")); // 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, 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, 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 DCutAction_PIDDeltaT(locReaction, false, 0.75, KPlus, SYS_TOF)); //false: measured data locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.5, KPlus, SYS_BCAL)); locReaction->Add_AnalysisAction(new DCutAction_PIDDeltaT(locReaction, false, 2.0, KPlus, 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_NoPIDHit(locReaction, KPlus)); //for K+ candidates, cut tracks with no PID hit locReaction->Add_AnalysisAction(new DCutAction_NoPIDHit(locReaction, KMinus)); // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PreKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.08, 0.08, "PreKinFit")); // KINEMATIC FIT 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)); //0% confidence level cut //require kinematic fit converges // HISTOGRAM MASSES //false/true: measured/kinfit data locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, false, 600, 0.35, 0.65, "KShort_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, false, 600, 0.9, 1.3, "Lambda_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, false, 600, 1.32, 2.22, "Omega_PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, false, 1000, -0.08, 0.08, "PostKinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, KShort, true, 600, 0.35, 0.65, "KShort_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, Lambda, true, 600, 0.9, 1.3, "Lambda_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_InvariantMass(locReaction, OmegaMinus, true, 600, 1.32, 2.22, "Omega_PostKinFit_KinFit")); locReaction->Add_AnalysisAction(new DHistogramAction_MissingMassSquared(locReaction, true, 1000, -0.08, 0.08, "PostKinFit_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)); // HISTOGRAM PID locReaction->Add_AnalysisAction(new DHistogramAction_PID(locReaction,"PostKinFit")); _data.push_back(locReaction); //Register the DReaction with the factory return NOERROR; } //------------------ // fini //------------------ jerror_t DReaction_factory_OmegaBaryon::fini(void) { for(size_t loc_i = 0; loc_i < dReactionStepPool.size(); ++loc_i) delete dReactionStepPool[loc_i]; //cleanup memory return NOERROR; }