29 class FilterSimPhotonLiteTime;
47 std::vector<std::pair<int, int>>
const 64 ,
fDebug(
p.get<
bool>(
"Debug",
false))
77 async<art::InEvent>();
86 std::cout <<
"\tFilterSimPhotonLiteTime: TimeWindows size is " <<
fTimeWindows.size()
91 std::cout <<
"\t\tTimeWindow " 92 <<
"[" << tw.first <<
"," << tw.second <<
"]" <<
std::endl;
94 if (tw.first > tw.second)
96 <<
"Bad time window initialization: tw.first>tw.second. Reverse the order!" <<
std::endl;
103 auto const& simPhotonsLiteCollection =
106 std::vector<int> sumNPhotonArray(
fN, 0);
108 const std::vector<sim::SimPhotonsLite>& simPhotonsLiteCollectionReflected =
111 std::vector<sim::SimPhotonsLite>();
113 size_t n_sim_photons = simPhotonsLiteCollection.size() + simPhotonsLiteCollectionReflected.size();
116 std::cout <<
"New event to filter with total # sim photons: " << n_sim_photons <<
std::endl;
119 for (
size_t i_pc = 0; i_pc < n_sim_photons; i_pc++) {
121 (i_pc < simPhotonsLiteCollection.size()) ?
122 simPhotonsLiteCollection[i_pc] :
123 simPhotonsLiteCollectionReflected[i_pc - simPhotonsLiteCollection.size()];
126 std::cout <<
"\tFilterSimPhotonLiteTime: Processing simphotonslite channel " 130 for (
size_t i_tw = 0; i_tw <
fN; i_tw++) {
132 if (photon_pair.first >= tw.first && photon_pair.first <= tw.second) {
136 (i_pc < simPhotonsLiteCollection.size()) ?
"Photon" :
"Reflected Photon";
137 std::cout <<
"\t\t" << photon_string <<
" with number " << photon_pair.second
138 <<
" at time " << photon_pair.first <<
" detected." <<
std::endl;
141 sumNPhotonArray[i_tw] += photon_pair.second;
144 std::cout <<
"\t\tTotal number of photons in this window (" << i_tw <<
") is now " 154 std::cout <<
"\tFilterSimPhotonLiteTime: Final total numbers are below min of " 156 for (
size_t i_tw = 0; i_tw <
fN; ++i_tw) {
157 std::cout <<
"\t\tTimeWindow " 159 <<
"]: " << sumNPhotonArray[i_tw] <<
std::endl;
FilterSimPhotonLiteTime & operator=(FilterSimPhotonLiteTime const &)=delete
bool filter(art::Event &e, art::ProcessingFrame const &) override
int const fMinTotalPhotons
Minimum number of photons inside a window to pass the filter.
SharedFilter(fhicl::ParameterSet const &pset)
bool const fUseReflectedPhotons
Whether to include reflected photons in the filter.
std::map< int, int > DetectedPhotons
Number of photons detected at each given time: time tick -> photons.
bool const fDebug
Set to true to print (a lot of) debug information.
Simulation objects for optical detectors.
#define DEFINE_ART_MODULE(klass)
std::string const fReflectedLabel
Label for the reflected photons – "Reflected" by default.
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
int OpChannel
Optical detector channel associated to this data.
Compact representation of photons on a channel.
std::size_t const fN
Number of time winows.
FilterSimPhotonLiteTime(fhicl::ParameterSet const &p, art::ProcessingFrame const &)
void serialize(T const &...)
std::string const fSimPhotonsLiteCollectionLabel
Label for the sim::SimPhotonsLite data product.
void CheckTimeWindows() const
cet::coded_exception< error, detail::translate > exception
QTextStream & endl(QTextStream &s)
std::vector< std::pair< int, int > > const fTimeWindows
Time windows used for filtering. Units are the same as in the sim::SimPhotonsLite.