MarlinTPC
1.2.0
|
The hit splitter separates hits that are merged. More...
#include <HitSplitter.h>
Classes | |
struct | Distance |
A nested helper struct to contain two pulses and the distance between them, and sort according to the distance. More... | |
class | SortablePulse |
A helper class to sort pulses according to their pad index. More... | |
Public Member Functions | |
HitSplitter (IMPL::LCCollectionVec *SplitHitsCollection, IMPL::LCCollectionVec *PulsesInSplitHitsCollection, float vDrift) | |
The constructor needs two collection it can write to: One for the split hits and one for the pulses that are contained in these hists (pulses might be split between hits, so they are not necessarily the same as the input pulses). More... | |
EVENT::TrackerHitVec | splitHit (EVENT::TrackerHit const *const) |
The split hits function returns a vector with the split hits. More... | |
Protected Types | |
typedef std::pair < std::multiset< SortablePulse > ::iterator, std::multiset < SortablePulse >::iterator > | IteratorPair |
Protected Attributes | |
IMPL::LCCollectionVec * | _splitHitsCollection |
IMPL::LCCollectionVec * | _pulsesInSplitHitsCollection |
float | _vDrift |
The drift velocity. | |
The hit splitter separates hits that are merged.
In a first step it looks for multiple pulses per channel and regroups the hit candidates so there is only one pulse per channel. It always associates the pulse on the neighbouring channels that are closest in time, if they overlap.
In a second step it searches for minima on a per pad basis, using the SignalSplitter class to separate overapping signals.
marlintpc::HitSplitter::HitSplitter | ( | IMPL::LCCollectionVec * | SplitHitsCollection, |
IMPL::LCCollectionVec * | PulsesInSplitHitsCollection, | ||
float | vDrift | ||
) |
The constructor needs two collection it can write to: One for the split hits and one for the pulses that are contained in these hists (pulses might be split between hits, so they are not necessarily the same as the input pulses).
In addition it needs the drift velocity to go from time (in pulses) to space (in the hits).
TrackerHitVec marlintpc::HitSplitter::splitHit | ( | EVENT::TrackerHit const * | const | ) |
The split hits function returns a vector with the split hits.
If the hit is not split the input hit is returned.
Attention: The split hits that are produced are automatically written to the collection given to the constructor. If you store the hits in an additional collection make sure it has the subSet flag turned on!
The idea behind this is that the hits which have not been split (which are usually already in a collection) and the split ones can be written to one collection (the one with the subSet flag turned on).
: set HAS_BEEN_DIVIDED flag
: this is arbitrary
References _vDrift, marlintpc::HitCandidate::addPulse(), marlintpc::HitCandidate::createTrackerHit(), and marlintpc::SignalSplitter::splitSignal().
Referenced by marlintpc::HitsInTracksSplitterProcessor::processEvent().