16 class DetectorClocksData;
26 std::vector<recob::OpFlash>&,
35 unsigned int GetAccumIndex(
double PeakTime,
double MinTime,
double BinWidth,
double BinOffset);
38 unsigned int const& HitIndex,
41 std::vector<double>& Binned,
43 std::vector<int>& FlashesInAccumulator);
46 std::vector<int>
const&,
47 std::vector<double>
const&,
48 std::vector<double>
const&,
51 std::vector<recob::OpHit>
const&,
56 std::vector<int>
const& FlashesInAccumulator,
57 std::vector<double>
const& BinnedPE,
58 int const& Accumulator,
59 std::map<
double, std::map<
int, std::vector<int>>, std::greater<double>>& FlashesBySize);
63 std::vector<int>
const& HitClaimedByFlash,
64 std::vector<int>& HitsThisFlash);
67 std::vector<int>
const& HitsThisFlash,
70 std::vector<int>& HitClaimedByFlash);
73 std::vector<recob::OpHit>
const&
HitVector,
78 void FindSeedHit(std::map<
double, std::vector<int>, std::greater<double>>
const& HitsBySize,
79 std::vector<bool>& HitsUsed,
80 std::vector<recob::OpHit>
const&
HitVector,
81 std::vector<int>& HitsThisRefinedFlash,
82 double& PEAccumulated,
84 double& FlashMinTime);
87 std::vector<bool>& HitsUsed,
90 std::vector<int>& HitsThisRefinedFlash,
91 double& PEAccumulated,
93 double& FlashMinTime);
96 std::vector<int>
const& HitsThisRefinedFlash,
99 std::vector<bool>& HitsUsed);
102 std::vector<recob::OpHit>
const&
HitVector,
103 std::vector<recob::OpFlash>& FlashVector,
115 std::vector<double>& PEs);
119 std::vector<double>& sumw,
120 std::vector<double>& sumw2,
137 std::vector<bool>& MarkedForRemoval);
140 std::vector<recob::OpFlash>& FlashVector,
142 std::vector<std::vector<int>>& RefinedHitsPerFlash);
144 template <
typename T,
typename Compare>
147 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 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, float const FlashThreshold, float const WidthTolerance, detinfo::DetectorClocksData const &ClocksData, float const TrigCoinc)
int compare(unsigned *r, sha1::digest_t const &d)
void ConstructFlash(std::vector< int > const &HitsPerFlashVec, std::vector< recob::OpHit > const &HitVector, std::vector< recob::OpFlash > &FlashVector, geo::GeometryCore const &geom, detinfo::DetectorClocksData const &ClocksData, float const TrigCoinc)
void AddHitContribution(recob::OpHit const ¤tHit, double &MaxTime, double &MinTime, double &AveTime, double &FastToTotal, double &AveAbsTime, double &TotalPE, std::vector< double > &PEs)
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)
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)
constexpr float FlashThreshold
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 geometry of one entire detector.
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< reco::ClusterHit2D * > HitVector
What follows are several highly useful typedefs which we want to expose to the outside world...
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)
Access the description of detector geometry.
constexpr double WidthTolerance
void GetHitGeometryInfo(recob::OpHit const ¤tHit, geo::GeometryCore const &geom, std::vector< double > &sumw, std::vector< double > &sumw2, double &sumy, double &sumy2, double &sumz, double &sumz2)
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)