public void Initialize(AdoDataConnection connection, VICycleDataGroup viCycleDataGroup, double systemFrequency)
            {
                int samplesPerCycle = Transform.CalculateSamplesPerCycle(viCycleDataGroup.VA.RMS, systemFrequency);

                TableOperations <FaultSegment> faultSegmentTable = new TableOperations <FaultSegment>(connection);

                RecordRestriction recordRestriction =
                    new RecordRestriction("EventID = {0}", Fault.EventID) &
                    new RecordRestriction("StartTime = {0}", ToDateTime2(connection, Fault.Inception)) &
                    new RecordRestriction("(SELECT Name FROM SegmentType WHERE ID = SegmentTypeID) = 'Fault'");

                FaultSegment faultSegment = faultSegmentTable.QueryRecord(recordRestriction);

                if ((object)faultSegment == null)
                {
                    throw new InvalidOperationException($"Unable to find fault segment that matches fault summary for event {Fault.EventID}.");
                }

                StartSample    = faultSegment.StartSample;
                EndSample      = faultSegment.EndSample - samplesPerCycle + 1;
                CycleDataGroup = Rotate(viCycleDataGroup.ToSubSet(StartSample, EndSample));

                DistanceCurve.StartIndex = StartSample;
                AngleCurve.StartIndex    = StartSample;
            }
            public void Initialize(DbAdapterContainer dbAdapterContainer, VICycleDataGroup viCycleDataGroup, double systemFrequency)
            {
                int samplesPerCycle = Transform.CalculateSamplesPerCycle(viCycleDataGroup.VA.RMS, systemFrequency);

                FaultSegment faultSegment = dbAdapterContainer.GetAdapter <FaultLocationInfoDataContext>().FaultSegments
                                            .Where(segment => segment.EventID == Fault.EventID)
                                            .Where(segment => segment.StartTime == Fault.Inception)
                                            .FirstOrDefault(segment => segment.SegmentType.Name == "Fault");

                if ((object)faultSegment != null)
                {
                    StartSample    = faultSegment.StartSample;
                    EndSample      = faultSegment.EndSample - samplesPerCycle + 1;
                    CycleDataGroup = Rotate(viCycleDataGroup.ToSubSet(StartSample, EndSample));

                    DistanceCurve.StartIndex = StartSample;
                    AngleCurve.StartIndex    = StartSample;
                }
            }