11 #include <tracking/modules/pxdDataReduction/PXDdigiFilterModule.h>
12 #include <tracking/dataobjects/ROIid.h>
30 setDescription(
"The module produce a StoreArray of PXDDigit inside the ROIs.");
31 setPropertyFlags(c_ParallelProcessingCertified);
34 addParam(
"PXDDigitsName", m_PXDDigitsName,
"The name of the StoreArray of PXDDigits to be filtered", std::string(
""));
35 addParam(
"PXDDigitsInsideROIName", m_PXDDigitsInsideROIName,
"The name of the StoreArray of Filtered PXDDigits",
36 std::string(
"PXDDigitsIN"));
37 addParam(
"PXDDigitsOutsideROIName", m_PXDDigitsOutsideROIName,
"The name of the StoreArray of Filtered PXDDigits",
38 std::string(
"PXDDigitsOUT"));
39 addParam(
"ROIidsName", m_ROIidsName,
"The name of the StoreArray of ROIs", std::string(
""));
40 addParam(
"CreateOutside", m_CreateOutside,
"Create the StoreArray of PXD pixel outside the ROIs",
false);
42 addParam(
"overrideDB", m_overrideDB,
"If set, ROI-filtering settings in DB are overwritten",
false);
43 addParam(
"usePXDDataReduction", m_usePXDDataReduction,
"enables/disables ROI-filtering if overrideDB=True",
false);
50 roiIDs.isRequired(m_ROIidsName);
53 PXDDigits.isRequired();
54 if (m_PXDDigitsName == m_PXDDigitsInsideROIName) {
55 m_selectorIN.registerSubset(PXDDigits);
58 m_selectorIN.inheritAllRelations();
61 if (m_CreateOutside) {
62 if (m_PXDDigitsName == m_PXDDigitsOutsideROIName) {
63 m_selectorOUT.registerSubset(PXDDigits);
65 m_selectorOUT.registerSubset(PXDDigits, m_PXDDigitsOutsideROIName);
66 m_selectorOUT.inheritAllRelations();
75 if (m_roiParameters) {
76 m_skipEveryNth = m_roiParameters->getDisableROIforEveryNth();
78 B2ERROR(
"No configuration for the current run found");
86 if (m_roiParameters.hasChanged()) {
87 if (m_roiParameters) {
88 m_skipEveryNth = m_roiParameters->getDisableROIforEveryNth();
90 B2ERROR(
"No configuration for the current run found");
97 if (m_usePXDDataReduction) {
108 if (m_skipEveryNth > 0 and m_countNthEvent % m_skipEveryNth == 0) {
124 multimap< VxdID, ROIid > ROIids;
126 for (
auto ROI : ROIids_store_array)
127 ROIids.insert(pair<VxdID, ROIid> (ROI.getSensorID() , ROI));
129 m_selectorIN.select([ROIids](
const PXDDigit * thePxdDigit) {
130 auto ROIidsRange = ROIids.equal_range(thePxdDigit->
getSensorID()) ;
131 for (
auto theROI = ROIidsRange.first ; theROI != ROIidsRange.second; theROI ++)
132 if (theROI->second.Contains(*thePxdDigit))
138 if (m_CreateOutside) {
139 m_selectorOUT.select([ROIids](
const PXDDigit * thePxdDigit) {
140 auto ROIidsRange = ROIids.equal_range(thePxdDigit->
getSensorID()) ;
141 for (
auto theROI = ROIidsRange.first ; theROI != ROIidsRange.second; theROI ++)
142 if (theROI->second.Contains(*thePxdDigit))
153 m_selectorIN.select([](
const PXDDigit* ) {
return true;});