         let fissionTime = absTime(CUnsignedShort(firstFissionAlphaTime), cycleEvent:mainCycleTimeEvent)
         let directions: Set<SearchDirection> = [.backward]
         search(directions: directions, startTime: fissionTime, minDeltaTime: recoilMinTime, maxDeltaTime: recoilMaxTime, useCycleTime: true, updateCycleEvent: false) { (event: ISAEvent, time: CUnsignedLongLong, deltaTime: CLongLong, stop: UnsafeMutablePointer<Bool>) in
-            if self.isFront(event, type: .recoil) && self.isEventFrontNearToFirstFissionAlphaFront(event, maxDelta: Int(self.recoilFrontMaxDeltaStrips)) {
-                let energy = self.getEnergy(event, type: .recoil)
-                if energy >= self.recoilFrontMinEnergy && energy <= self.recoilFrontMaxEnergy {
-                    // Сохраняем рекойл только если к нему найден Recoil Back и TOF (если required)
-                    var position = fpos_t()
-                    fgetpos(self.file, &position)
-                    let isRecoilBackFounded = self.findRecoilBack(CUnsignedLongLong(event.param1))
-                    fseek(self.file, Int(position), SEEK_SET)
-                    if (isRecoilBackFounded) {
-                        let isTOFFounded = self.findTOFForRecoil(event, timeRecoil: time)
+            let isRecoil = self.isFront(event, type: .recoil)
+            if isRecoil {
+                let isNear = self.isEventFrontNearToFirstFissionAlphaFront(event, maxDelta: Int(self.recoilFrontMaxDeltaStrips))
+                if isNear {
+                    let energy = self.getEnergy(event, type: .recoil)
+                    if energy >= self.recoilFrontMinEnergy && energy <= self.recoilFrontMaxEnergy {
+                        // Сохраняем рекойл только если к нему найден Recoil Back и TOF (если required)
+                        var position = fpos_t()
+                        fgetpos(self.file, &position)
+                        let t = CUnsignedLongLong(event.param1)
+                        let isRecoilBackFounded = self.findRecoilBack(t)
                         fseek(self.file, Int(position), SEEK_SET)
-                        if (!self.requiredTOF || isTOFFounded) {
-                            self.storeRecoil(event, deltaTime: deltaTime)
-                        }
-                    }
-                }
-            }
+                        if (isRecoilBackFounded) {
+                            let isTOFFounded = self.findTOFForRecoil(event, timeRecoil: t)
+                            fseek(self.file, Int(position), SEEK_SET)
+                            if (!self.requiredTOF || isTOFFounded) {
+                                self.storeRecoil(event, deltaTime: deltaTime)
+                            }
+                        }
+                    }
+                }
+            }
+            
         }
     }
     

        var fission: [String: Any]?
        var maxE: Double = 0
        for info in fissionsAlphaBackPerAct {
            if let dict = info as? [String: Any], let e = dict[kEnergy] as? Double {
                if (maxE < e) {
                    maxE = e
                    fission = dict

     */
    func isEventFrontNearToFirstFissionAlphaFront(_ event: ISAEvent, maxDelta: Int) -> Bool {
        let strip_0_15 = event.param2 >> 12
        let strip_1_48 = focalStripConvertToFormat_1_48(strip_0_15, eventId:event.eventId)
        if let n = firstFissionAlphaInfo?[kStrip1_48] {
            let s = n as! CUnsignedShort
            return abs(Int32(strip_1_48) - Int32(s)) <= Int32(maxDelta)
        }
        return false
    }
