11 #include <tracking/modules/pxdDataReduction/PXDclusterFilterModule.h>
29 setDescription(
"The module produce a StoreArray of PXDClusters inside/overlapping any of the ROIs.");
32 addParam(
"PXDClustersName", m_PXDClustersName,
"The name of the StoreArray of PXDClusters to be filtered", std::string(
""));
33 addParam(
"PXDClustersInsideROIName", m_PXDClustersInsideROIName,
"The name of the StoreArray of Filtered PXDClusters",
34 std::string(
"PXDClustersIN"));
35 addParam(
"PXDClustersOutsideROIName", m_PXDClustersOutsideROIName,
"The name of the StoreArray of Filtered PXDClusters",
36 std::string(
"PXDClustersOUT"));
37 addParam(
"ROIidsName", m_ROIidsName,
"The name of the StoreArray of ROIs", std::string(
""));
38 addParam(
"CreateOutside", m_CreateOutside,
"Create the StoreArray of PXD clusters outside the ROIs",
false);
40 addParam(
"overrideDB", m_overrideDB,
"If set, ROI-finding settings in DB are overwritten",
false);
41 addParam(
"enableFiltering", m_enableFiltering,
"enables/disables ROI-finding if overrideDB=True",
false);
49 roiIDs.isRequired(m_ROIidsName);
53 PXDClusters.isRequired();
55 m_selectorIN.registerSubset(PXDClusters, m_PXDClustersInsideROIName);
56 m_selectorIN.inheritAllRelations();
58 if (m_CreateOutside) {
59 m_selectorOUT.registerSubset(PXDClusters, m_PXDClustersOutsideROIName);
60 m_selectorOUT.inheritAllRelations();
68 if (m_roiParameters) {
69 m_skipEveryNth = m_roiParameters->getDisableROIforEveryNth();
71 B2ERROR(
"No configuration for the current run found");
82 if (theROI.getSensorID() != thePXDCluster.
getSensorID())
return false;
87 if (theROI.getMinUid() <= thePixel.getUCellID() &&
88 theROI.getMaxUid() >= thePixel.getUCellID() &&
89 theROI.getMinVid() <= thePixel.getVCellID() &&
90 theROI.getMaxVid() >= thePixel.getVCellID())
return true;
99 if (m_roiParameters.hasChanged()) {
100 if (m_roiParameters) {
101 m_skipEveryNth = m_roiParameters->getDisableROIforEveryNth();
103 B2ERROR(
"No configuration for the current run found");
110 if (m_enableFiltering) {
121 if (m_skipEveryNth > 0 and m_countNthEvent % m_skipEveryNth == 0) {
138 multimap< VxdID, ROIid > ROIids;
140 for (
auto ROI : ROIids_store_array)
141 ROIids.insert(pair<VxdID, ROIid> (ROI.getSensorID() , ROI));
143 m_selectorIN.select([ROIids,
this](
const PXDCluster * thePxdCluster) {
144 auto ROIidsRange = ROIids.equal_range(thePxdCluster->
getSensorID()) ;
145 for (
auto theROI = ROIidsRange.first ; theROI != ROIidsRange.second; theROI ++)
146 if (Overlaps(theROI->second, *thePxdCluster))
152 if (m_CreateOutside) {
153 m_selectorOUT.select([ROIids,
this](
const PXDCluster * thePxdCluster) {
154 auto ROIidsRange = ROIids.equal_range(thePxdCluster->
getSensorID()) ;
155 for (
auto theROI = ROIidsRange.first ; theROI != ROIidsRange.second; theROI ++)
156 if (Overlaps(theROI->second, *thePxdCluster))
167 m_selectorIN.select([](
const PXDCluster* ) {
return true;});