15 class DetectorClocksData;
28 std::vector<recob::OpFlash>&,
37 unsigned int GetAccumIndex(
double PeakTime,
double MinTime,
double BinWidth,
double BinOffset);
40 unsigned int const& HitIndex,
43 std::vector<double>& Binned,
45 std::vector<int>& FlashesInAccumulator);
48 std::vector<int>
const&,
49 std::vector<double>
const&,
50 std::vector<double>
const&,
53 std::vector<recob::OpHit>
const&,
58 std::vector<int>
const& FlashesInAccumulator,
59 std::vector<double>
const& BinnedPE,
60 int const& Accumulator,
61 std::map<
double, std::map<
int, std::vector<int>>, std::greater<double>>& FlashesBySize);
65 std::vector<int>
const& HitClaimedByFlash,
66 std::vector<int>& HitsThisFlash);
69 std::vector<int>
const& HitsThisFlash,
72 std::vector<int>& HitClaimedByFlash);
75 std::vector<recob::OpHit>
const&
HitVector,
78 float FlashThreshold);
80 void FindSeedHit(std::map<
double, std::vector<int>, std::greater<double>>
const& HitsBySize,
81 std::vector<bool>& HitsUsed,
82 std::vector<recob::OpHit>
const&
HitVector,
83 std::vector<int>& HitsThisRefinedFlash,
84 double& PEAccumulated,
86 double& FlashMinTime);
89 std::vector<bool>& HitsUsed,
91 double WidthTolerance,
92 std::vector<int>& HitsThisRefinedFlash,
93 double& PEAccumulated,
95 double& FlashMinTime);
98 std::vector<int>
const& HitsThisRefinedFlash,
100 float FlashThreshold,
101 std::vector<bool>& HitsUsed);
104 std::vector<recob::OpHit>
const&
HitVector,
105 std::vector<recob::OpFlash>& FlashVector,
117 std::vector<double>& PEs);
121 std::vector<double>& sumw,
122 std::vector<double>& sumw2,
139 std::vector<bool>& MarkedForRemoval);
142 std::vector<recob::OpFlash>& FlashVector,
144 std::vector<std::vector<int>>& RefinedHitsPerFlash);
146 template <
typename T,
typename Compare>
147 std::vector<int>
sort_permutation(std::vector<T>
const& vec,
int offset, Compare compare);
149 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)
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)
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::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< 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 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)
Namespace collecting geometry-related classes utilities.
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)