private void InsertSubFingerprint(HashedFingerprint hashedFingerprint, IModelReference trackReference)
{
var subFingerprintReference = new ModelReference<long>(Interlocked.Increment(ref counter));
storage.SubFingerprints[subFingerprintReference] = new SubFingerprintData(
hashedFingerprint.HashBins,
hashedFingerprint.SequenceNumber,
hashedFingerprint.StartsAt,
subFingerprintReference,
trackReference) {
Clusters = hashedFingerprint.Clusters
};
if (!storage.TracksHashes.ContainsKey(trackReference))
{
storage.TracksHashes[trackReference] = new ConcurrentDictionary<IModelReference, HashedFingerprint>();
}
storage.TracksHashes[trackReference][subFingerprintReference] = hashedFingerprint;
this.InsertHashes(hashedFingerprint.HashBins, subFingerprintReference);
}