25 class FilterSimPhotonTime;
60 ,
fDebug(
p.get<
bool>(
"Debug",
false))
73 async<art::InEvent>();
86 std::cout <<
"\t\tTimeWindow " 87 <<
"[" << tw.first <<
"," << tw.second <<
"]" <<
std::endl;
89 if (tw.first > tw.second)
91 <<
"Bad time window initialization: tw.first>tw.second. Reverse the order!" <<
std::endl;
98 auto const& simPhotonsCollection =
101 std::vector<double> sumEnergyArray(
fN, 0.0);
103 const std::vector<sim::SimPhotons>& simPhotonsCollectionReflected =
106 std::vector<sim::SimPhotons>();
108 size_t n_sim_photons = simPhotonsCollection.size() + simPhotonsCollectionReflected.size();
110 for (
size_t i_pc = 0; i_pc < n_sim_photons; i_pc++) {
112 (i_pc < simPhotonsCollection.size()) ?
113 simPhotonsCollection[i_pc] :
114 simPhotonsCollectionReflected[i_pc - simPhotonsCollection.size()];
117 std::cout <<
"\tFilterSimPhotonTime: Processing simphotons channel " << simphotons.
OpChannel()
120 for (
auto const& photon : simphotons)
121 for (
size_t i_tw = 0; i_tw <
fN; i_tw++) {
123 if (photon.Time >= tw.first && photon.Time <= tw.second &&
128 (i_pc < simPhotonsCollection.size()) ?
"Photon" :
"Reflected Photon";
129 std::cout <<
"\t\t" << photon_string <<
" with time " << photon.Time <<
" detected. " 130 <<
"Energy is " << photon.Energy <<
"." <<
std::endl;
133 sumEnergyArray[i_tw] += photon.Energy;
136 std::cout <<
"\t\tTotal energy in this window (" << i_tw <<
") is now " 145 std::cout <<
"\tFilterSimPhotonTime: Final total energies are below min of " <<
fMinTotalEnergy 147 for (
size_t i_tw = 0; i_tw <
fN; ++i_tw) {
148 std::cout <<
"\t\tTimeWindow " 150 <<
"]: " << sumEnergyArray[i_tw] <<
std::endl;
float const fMinTotalEnergy
FilterSimPhotonTime(fhicl::ParameterSet const &p, art::ProcessingFrame const &)
int OpChannel() const
Returns the optical channel number this object is associated to.
std::vector< std::pair< float, float > > const fTimeWindows
SharedFilter(fhicl::ParameterSet const &pset)
std::string const fReflectedLabel
std::string const fSimPhotonsCollectionLabel
Simulation objects for optical detectors.
#define DEFINE_ART_MODULE(klass)
float const fMinPhotonEnergy
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
bool filter(art::Event &e, art::ProcessingFrame const &) override
Collection of photons which recorded on one channel.
void CheckTimeWindows() const
void serialize(T const &...)
bool const fUseReflectedPhotons
FilterSimPhotonTime & operator=(FilterSimPhotonTime const &)=delete
cet::coded_exception< error, detail::translate > exception
QTextStream & endl(QTextStream &s)