  CALL CPU_TIME(cpu_time1)
  gtmp_old1 = 0.d0
  gtmp_old2 = 0.d0
  gtmp_new  = 0.d0
  NRJ_old1  = 0.d0
  NRJ_old2  = 0.d0
  NRJ_new   = 0.d0
  !modNext   = 1!modNoise2
  indDensity = 1
  DO isweep = 1, itotal
    DO iflavor = 1, flavors
!      CALL ImpurityOperator_activateParticle(Impurity, iflavor)   
!      CALL BathOperator_activateParticle    (Bath , iflavor)
      ImpurityOperator_QuickActivation(op%Impurity,iflavor)
      BathOperator_QuickActivation(op%Bath,iflavor)

      !!CALL Ctqmc_trySegment(op, op%Impurity, op%Bath, updated_seg)
      !!CALL Ctqmc_tryAntiSeg(op, op%Impurity, op%Bath, updated_anti)
      !CALL Ctqmc_trySegment(op, updated_seg)
      !CALL Ctqmc_tryAntiSeg(op, updated_anti)
      !CALL Ctqmc_tryAddRemove(op,CTQMC_SEGME,updated_seg)
      !CALL Ctqmc_tryAddRemove(op,CTQMC_ANTIS,updated_anti)
      CALL Ctqmc_tryAddRemove(op,updated_anti)
      updated = updated_anti .OR.  updated_swap(iflavor)
      !updated = updated_seg .OR. updated_anti .OR.  updated_swap(iflavor)
      updated_swap(iflavor) = .FALSE.

      CALL GreenHyb_measHybrid(op%Greens(iflavor), op%Bath%M(iflavor), op%Impurity%Particles(iflavor), updated)
      !CALL Ctqmc_measN        (op, op%Impurity, iflavor, updated)
      CALL Ctqmc_measN        (op, iflavor, updated)
!#ifdef CTCtqmc_ANALYSIS
      IF ( op%opt_analysis .EQ. 1 ) &
        !CALL Ctqmc_measCorrelation (op, op%Impurity, iflavor)
        CALL Ctqmc_measCorrelation (op, iflavor)
      IF ( op%opt_order .GT. 0 ) &
        !CALL Ctqmc_measPerturbation(op, op%Impurity, iflavor)
        CALL Ctqmc_measPerturbation(op, iflavor)
!#endif
    END DO

    IF ( MOD(isweep,modGlobalMove) .EQ. 0 ) THEN
      !CALL Ctqmc_trySwap(op,op%Impurity,op%Bath,swapUpdate1, swapUpdate2)
      CALL Ctqmc_trySwap(op,swapUpdate1, swapUpdate2)
      IF ( swapUpdate1 .NE. 0 .AND. swapUpdate2 .NE. 0 ) THEN
        updated_swap(swapUpdate1) = .TRUE.
        updated_swap(swapUpdate2) = .TRUE.
      END IF
    END IF
    
    IF ( MOD(isweep,measurements) .EQ. 0 ) THEN
      CALL ImpurityOperator_measDE(op%Impurity,op%measDE)
      IF ( op%opt_spectra .GE. 1 .AND. MOD(isweep,measurements*op%opt_spectra) .EQ. 0 ) THEN
        op%density(1:flavors,indDensity) = op%measN(3,1:flavors)
        indDensity = indDensity+1
        !IF ( indDensity .GT. endDensity ) THEN
        !  ! Perform FFT and print the resulting data
        !  ! print spectra
        !  DO indDensity = 1, endDensity
        !    WRITE(iSpectra,formatSpectra) op%density(:,indDensity)
        !  END DO
        !  indDensity = 1
        !END IF
      END IF
    END IF

    IF ( MOD(isweep, modNoise1) .EQ. 0 ) THEN
      !modNext = isweep + modNoise2
      NRJ_new = op%measDE(1,1)
      CALL Vector_pushBack(op%measNoise(1),NRJ_new - NRJ_old1)
      NRJ_old1 = NRJ_new
      !! Try to limit accumulation error
      CALL ImpurityOperator_cleanOverlaps(op%Impurity)
      IF ( op%opt_noise .EQ. 1 ) THEN
        DO iflavor = 1, flavors
          DO ind = 1, op%Greens(iflavor)%map%tail
            itau = op%Greens(iflavor)%map%listINT(ind)
            gtmp_new(itau,iflavor) = op%Greens(iflavor)%oper(itau) & 
                        +op%Greens(iflavor)%map%listDBLE(ind)*DBLE(op%Greens(iflavor)%factor)
          END DO
          DO itau = 1, sp1
            CALL Vector_pushBack(op%measNoiseG(itau,iflavor,1), gtmp_new(itau,iflavor) - gtmp_old1(itau,iflavor))
            gtmp_old1(itau,iflavor) = gtmp_new(itau,iflavor)
          END DO
        END DO
      END IF
      !op%measDE(1,1) = 0.d0
!      IF ( op%rank .EQ. 0 ) THEN
!        !WRITE(op%ostream,'(1x,A,A,A,A,A,A,A,A,A,A)', ADVANCE="NO") CHAR(8),CHAR(8),CHAR(8),CHAR(8),CHAR(8),CHAR(8)&
!        !                                              ,CHAR(8),CHAR(8),CHAR(8),CHAR(8)
!        !WRITE(op%ostream,'(1x,A2,I3,A3)',ADVANCE="NO") "[ ", NINT(DBLE(isweep*100)/DBLE(thermalization)), "% ]"
!        new_percent = CEILING(DBLE(isweep)*100.d0/total)
!        DO ipercent = old_percent+1, new_percent 
!          !IF ( BTEST(ipercent,1) .EQV. .TRUE.) &
!          WRITE(op%ostream,'(A)',ADVANCE="NO") "-"
!        END DO
!        old_percent = new_percent
!        CALL FLUSH(op%ostream)
!      END IF
    !ELSE IF ( isweep .EQ. modNext) THEN
    END IF

    IF ( MOD(isweep,modNoise2) .EQ. 0 ) THEN
      NRJ_new = op%measDE(1,1)
      CALL Vector_pushBack(op%measNoise(2),NRJ_new - NRJ_old2)
      NRJ_old2 = NRJ_new
      IF ( op%opt_noise .EQ. 1 ) THEN
        DO iflavor = 1, flavors
          DO ind = 1, op%Greens(iflavor)%map%tail
            itau = op%Greens(iflavor)%map%listINT(ind)
            gtmp_new(itau,iflavor) = op%Greens(iflavor)%oper(itau) & 
                        +op%Greens(iflavor)%map%listDBLE(ind)*op%Greens(iflavor)%factor
          END DO
          DO itau = 1, sp1
            CALL Vector_pushBack(op%measNoiseG(itau,iflavor,2), gtmp_new(itau,iflavor) - gtmp_old2(itau,iflavor))
            gtmp_old2(itau,iflavor) = gtmp_new(itau,iflavor)
          END DO
        END DO 
      END IF
      !modNext = -1
      IF ( op%rank .EQ. 0 ) THEN 
        !WRITE(op%ostream,'(1x,A,A,A,A,A,A,A,A,A,A)', ADVANCE="NO") CHAR(8),CHAR(8),CHAR(8),CHAR(8),CHAR(8),CHAR(8)&
        !                                              ,CHAR(8),CHAR(8),CHAR(8),CHAR(8)
        !WRITE(op%ostream,'(1x,A2,I3,A3)',ADVANCE="NO") "[ ", NINT(DBLE(isweep*100)/DBLE(thermalization)), "% ]"
        new_percent = CEILING(DBLE(isweep)*100.d0/total)
        DO ipercent = old_percent+1, new_percent 
          !IF ( BTEST(ipercent,1) .EQV. .TRUE.) &
          WRITE(op%ostream,'(A)',ADVANCE="NO") "-"
        END DO
        old_percent = new_percent
        !CALL FLUSH(op%ostream)
      END IF
    END IF

!#ifdef CTCtqmc_MOVIE
    IF ( op%opt_movie .EQ. 1 ) THEN
      WRITE(ilatex,'(A11,I9)') "%iteration ", isweep
      CALL ImpurityOperator_printLatex(op%Impurity,ilatex,isweep)
    END IF
!#endif
  END DO
  IF ( op%rank .EQ. 0 ) THEN
    DO ipercent = old_percent+1, 100
          !IF ( BTEST(ipercent,1) .EQV. .TRUE.) &
      !IF ( MOD(ipercent,2) .EQ. 0) &
      WRITE(op%ostream,'(A)',ADVANCE="NO") "-"
    END DO
    WRITE(op%ostream,'(A)') "|"
    !CALL FLUSH(op%ostream)
  END IF
  CALL CPU_TIME(cpu_time2)
