9 #include <ecl/modules/eclTriggerClusterMatcher/ECLTriggerClusterMatcherModule.h>
12 #include <framework/geometry/B2Vector3.h>
15 #include <mdst/dataobjects/ECLCluster.h>
18 #include <trg/ecl/dataobjects/TRGECLCluster.h>
36 setDescription(
"Match ECLTRGClusters to ECLClusters");
37 addParam(
"minClusterEnergy", m_minClusterEnergy,
"Minimum energy of the ECLCluster to be checked [GeV].", 0.1);
38 addParam(
"maxAngle", m_maxAngle,
"Maximum angle between an ECLCLuster and an ECLTRGCluster [rad]", 0.15);
39 addParam(
"minFracEnergy", m_minFracEnergy,
"Minimum energy fraction trg/cluster.", 0.);
40 addParam(
"maxFracEnergy", m_maxFracEnergy,
"Maximal energy fraction trg/cluster.", 2.);
41 setPropertyFlags(c_ParallelProcessingCertified);
46 m_eclClusters.isRequired();
47 m_eclTriggers.isRequired();
48 m_eclClusters.registerRelationTo(m_eclTriggers);
53 for (
auto& eclcluster : m_eclClusters) {
54 const double eclclusterTheta = eclcluster.getTheta();
55 const double eclclusterPhi = eclcluster.getPhi();
57 double eclclusterE = 0.0;
70 if (eclclusterE < m_minClusterEnergy)
continue;
74 cluster.SetTheta(eclclusterTheta);
75 cluster.SetPhi(eclclusterPhi);
77 for (
const auto& ecltrigger : m_eclTriggers) {
78 const double ecltriggerX = ecltrigger.getPositionX();
79 const double ecltriggerY = ecltrigger.getPositionY();
80 const double ecltriggerZ = ecltrigger.getPositionZ();
81 const double ecltriggerE = ecltrigger.getEnergyDep();
83 B2Vector3D trigger(ecltriggerX, ecltriggerY, ecltriggerZ);
85 const double angle = cluster.Angle(trigger);
87 double fracEnergy = -1.;
88 if (eclclusterE > 0.0) fracEnergy = ecltriggerE / eclclusterE;
91 if (angle < m_maxAngle and fracEnergy > m_minFracEnergy and fracEnergy < m_maxFracEnergy) {
93 eclcluster.addRelationTo(&ecltrigger);
@ c_TriggerCluster
bit 0: ECLCluster is matched to a ECL trigger cluster
@ c_TriggerClusterMatching
bit 1: ECLCluster to ECLTRGCluster matcher was run
@ c_nPhotons
CR is split into n photons (N1)
@ c_neutralHadron
CR is reconstructed as a neutral hadron (N2)
Match ECLTRGClusters to ECLClusters.
virtual void initialize() override
Register input and output data.
virtual void event() override
Event.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.