1#ifndef DQM_NUCLEARDQM_H
2#define DQM_NUCLEARDQM_H
4#include <Math/Vector3D.h>
11#include "Framework/Configure/Parameters.h"
14#include "SimCore/Event/SimParticle.h"
35 three_or_more_neutrons = 3,
36 single_charged_pion = 4,
37 two_charged_pions = 5,
38 single_neutral_pion = 6,
39 single_charged_pion_and_nucleon = 7,
40 single_charged_pion_and_two_nucleons = 8,
41 two_charged_pions_and_nucleon = 9,
42 single_neutral_pion_and_nucleon = 10,
43 single_neutral_pion_and_two_nucleons = 11,
44 single_neutral_pion_charged_pion_and_nucleon = 12,
60 single_charged_kaon = 1,
61 single_neutral_kaon = 2,
90 const std::map<int, ldmx::SimParticle>& particleMap,
109 const std::vector<const ldmx::SimParticle*>& daughters,
110 const std::string& prefix);
122 const std::vector<const ldmx::SimParticle*>& daughters,
123 const std::string& prefix);
134 const std::vector<const ldmx::SimParticle*>& daughters,
142 const std::vector<const ldmx::SimParticle*>& daughters,
double threshold);
150 const std::vector<const ldmx::SimParticle*>& daughters,
double threshold);
157 if (pdgCode > 1000000000) {
158 return ((pdgCode / 10) % 1000) <= 4;
163 std::string sim_particles_coll_name_;
164 std::string sim_particles_passname_;
165 bool count_light_ions_{
true};
Base classes for all user event processing components to extend.
Class implementing an event buffer system for storing event data.
Base class for nuclear interaction DQM analyzers.
void configure(framework::config::Parameters ¶meters) override
Read common configuration parameters: sim_particles_coll_name, sim_particles_passname,...
std::vector< const ldmx::SimParticle * > findDaughters(const std::map< int, ldmx::SimParticle > &particleMap, const ldmx::SimParticle *parent, int require_process_type=-1) const
Return daughters of parent that pass PDG-based filtering:
EventType classifyEvent(const std::vector< const ldmx::SimParticle * > &daughters, double threshold)
Classify the event by the number and type of hard daughters above threshold [MeV] of kinetic energy.
CompactEventType classifyCompactEvent(const ldmx::SimParticle *initiator, const std::vector< const ldmx::SimParticle * > &daughters, double threshold)
Compact classification: looks for a single particle carrying >= 80% of the initiator energy,...
constexpr bool isLightIon(int pdgCode) const
Return true if pdgCode is a light ion (Z <= 4).
EventType
Classification of PN/EN events by the hard particles produced above a kinetic-energy threshold.
void findSubleadingKinematics(const ldmx::SimParticle *initiator, const std::vector< const ldmx::SimParticle * > &daughters, EventType eventType)
Fill subleading-kinematics histograms for 1n, 2n, charged-kaon and neutral-kaon event types.
void findParticleKinematics(const std::vector< const ldmx::SimParticle * > &daughters, const std::string &prefix)
Fill kinematic histograms for the nuclear interaction products.
void findExtendedKinematics(const std::vector< const ldmx::SimParticle * > &daughters, const std::string &prefix)
Fill extended kinematic histograms for EN interactions: hardest_pi_ke/theta (π± only),...
CompactEventType
Compact classification focusing on very-high-energy single particles.
Base class for a module which does not produce a data product.
virtual void process(Event &event) final
Processing an event for an Analyzer is calling analyze.
Class which represents the process under execution.
Class encapsulating parameters for configuring a processor.
Class representing a simulated particle.