16 class DetectorClocksData;
26 std::vector<recob::OpFlash>&,
36 unsigned int GetAccumIndex(
double PeakTime,
double MinTime,
double BinWidth,
double BinOffset);
39 unsigned int const& HitIndex,
42 std::vector<double>& Binned,
44 std::vector<int>& FlashesInAccumulator);
47 std::vector<int>
const&,
48 std::vector<double>
const&,
49 std::vector<double>
const&,
52 std::vector<recob::OpHit>
const&,
57 std::vector<int>
const& FlashesInAccumulator,
58 std::vector<double>
const& BinnedPE,
59 int const& Accumulator,
60 std::map<
double, std::map<
int, std::vector<int>>, std::greater<double>>& FlashesBySize);
64 std::vector<int>
const& HitClaimedByFlash,
65 std::vector<int>& HitsThisFlash);
68 std::vector<int>
const& HitsThisFlash,
71 std::vector<int>& HitClaimedByFlash);
74 std::vector<recob::OpHit>
const&
HitVector,
77 float FlashThreshold);
79 void FindSeedHit(std::map<
double, std::vector<int>, std::greater<double>>
const& HitsBySize,
80 std::vector<bool>& HitsUsed,
81 std::vector<recob::OpHit>
const&
HitVector,
82 std::vector<int>& HitsThisRefinedFlash,
83 double& PEAccumulated,
85 double& FlashMinTime);
88 std::vector<bool>& HitsUsed,
90 double WidthTolerance,
91 std::vector<int>& HitsThisRefinedFlash,
92 double& PEAccumulated,
94 double& FlashMinTime);
97 std::vector<int>
const& HitsThisRefinedFlash,
100 std::vector<bool>& HitsUsed);
103 std::vector<recob::OpHit>
const&
HitVector,
104 std::vector<recob::OpFlash>& FlashVector,
117 std::vector<double>& PEs);
122 std::vector<double>& sumw,
123 std::vector<double>& sumw2,
140 std::vector<bool>& MarkedForRemoval);
143 std::vector<recob::OpFlash>& FlashVector,
145 std::vector<std::vector<int>>& RefinedHitsPerFlash);
147 template <
typename T,
typename Compare>
150 template <
typename T>
void FillHitsThisFlash(std::vector< std::vector< int >> const &Contributors, int const &Bin, std::vector< int > const &HitClaimedByFlash, std::vector< int > &HitsThisFlash)
void CheckAndStoreFlash(std::vector< std::vector< int >> &RefinedHitsPerFlash, std::vector< int > const &HitsThisRefinedFlash, double const PEAccumulated, float const FlashThreshold, std::vector< bool > &HitsUsed)
void AddHitContribution(recob::OpHit const ¤tHit, double &MaxTime, double &MinTime, double &AveTime, double &FastToTotal, double &AveAbsTime, double &TotalPE, std::vector< double > &PEs)
void RunFlashFinder(std::vector< recob::OpHit > const &HitVector, std::vector< recob::OpFlash > &FlashVector, std::vector< std::vector< int >> &AssocList, double const BinWidth, geo::GeometryCore const &geom, geo::WireReadoutGeom const &wireReadoutGeom, float const FlashThreshold, float const WidthTolerance, detinfo::DetectorClocksData const &ClocksData, float const TrigCoinc)
void apply_permutation(std::vector< T > &vec, std::vector< int > const &p)
void AssignHitsToFlash(std::vector< int > const &FlashesInAccumulator1, std::vector< int > const &FlashesInAccumulator2, std::vector< double > const &Binned1, std::vector< double > const &Binned2, std::vector< std::vector< int >> const &Contributors1, std::vector< std::vector< int >> const &Contributors2, std::vector< recob::OpHit > const &HitVector, std::vector< std::vector< int >> &HitsPerFlash, float const FlashThreshold)
void FindSeedHit(std::map< double, std::vector< int >, std::greater< double >> const &HitsBySize, std::vector< bool > &HitsUsed, std::vector< recob::OpHit > const &HitVector, std::vector< int > &HitsThisRefinedFlash, double &PEAccumulated, double &FlashMaxTime, double &FlashMinTime)
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
void MarkFlashesForRemoval(std::vector< recob::OpFlash > const &FlashVector, size_t const BeginFlash, std::vector< bool > &MarkedForRemoval)
void ClaimHits(std::vector< recob::OpHit > const &HitVector, std::vector< int > const &HitsThisFlash, float const FlashThreshold, std::vector< std::vector< int >> &HitsPerFlash, std::vector< int > &HitClaimedByFlash)
std::function< bool(T const &, T const &)> Compare
Interface for a class providing readout channel mapping to geometry.
std::vector< int > sort_permutation(std::vector< T > const &vec, int offset, Compare compare)
void FillFlashesBySizeMap(std::vector< int > const &FlashesInAccumulator, std::vector< double > const &BinnedPE, int const &Accumulator, std::map< double, std::map< int, std::vector< int >>, std::greater< double >> &FlashesBySize)
void RemoveLateLight(std::vector< recob::OpFlash > &FlashVector, std::vector< std::vector< int >> &RefinedHitsPerFlash)
General LArSoft Utilities.
Description of the physical geometry of one entire detector.
void GetHitGeometryInfo(recob::OpHit const ¤tHit, geo::GeometryCore const &geom, geo::WireReadoutGeom const &wireReadoutGeom, std::vector< double > &sumw, std::vector< double > &sumw2, double &sumy, double &sumy2, double &sumz, double &sumz2)
void AddHitToFlash(int const &HitID, std::vector< bool > &HitsUsed, recob::OpHit const ¤tHit, double const WidthTolerance, std::vector< int > &HitsThisRefinedFlash, double &PEAccumulated, double &FlashMaxTime, double &FlashMinTime)
std::vector< art::Ptr< recob::Hit > > HitVector
void RefineHitsInFlash(std::vector< int > const &HitsThisFlash, std::vector< recob::OpHit > const &HitVector, std::vector< std::vector< int >> &RefinedHitsPerFlash, float const WidthTolerance, float const FlashThreshold)
Contains all timing reference information for the detector.
unsigned int GetAccumIndex(double const PeakTime, double const MinTime, double const BinWidth, double const BinOffset)
void ConstructFlash(std::vector< int > const &HitsPerFlashVec, std::vector< recob::OpHit > const &HitVector, std::vector< recob::OpFlash > &FlashVector, geo::GeometryCore const &geom, geo::WireReadoutGeom const &wireReadoutGeom, detinfo::DetectorClocksData const &ClocksData, float const TrigCoinc)
void RemoveFlashesFromVectors(std::vector< bool > const &MarkedForRemoval, std::vector< recob::OpFlash > &FlashVector, size_t const BeginFlash, std::vector< std::vector< int >> &RefinedHitsPerFlash)
void FillAccumulator(unsigned int const &AccumIndex, unsigned int const &HitIndex, double const PE, float const FlashThreshold, std::vector< double > &Binned, std::vector< std::vector< int >> &Contributors, std::vector< int > &FlashesInAccumulator)
double GetLikelihoodLateLight(double const iPE, double const iTime, double const iWidth, double const jPE, double const jTime, double const jWidth)