Feature #8385

Remove all $20 cycle deceleration code

Added by Kyle Hazelwood almost 6 years ago. Updated almost 6 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:
3.00 h
Spent time:


The votes are in... We will never again attempt to decelerate beam in the Main Injector again. The $20 cycle was special in I2, it was purposed for decelerating antiprotons recycled from the TeVatron after a collider store. This scheme never worked and eventually it was decided that the focus should be on antiproton productioin instead of recycling.

The $20 cycle is now going to be used for RR > MI > SY beam so it now needs to be no different than the $21 in I2. All special deceleration code in I2 needs to be removed.

Related issues

Related to Main Injector MECAR Application (PA1665, I2) - Bug #8318: I2 doesn't set I:EOB20 correctly?Closed04/13/2015


#1 Updated by Kyle Hazelwood almost 6 years ago

  • Related to Bug #8318: I2 doesn't set I:EOB20 correctly? added

#2 Updated by Kyle Hazelwood almost 6 years ago

Changes needed:

Remove ramp.cpp lines 47, 48, 49 where $20 specific methods are instantiated

static void r_disp_20_timers(int irw,int icl);
int r_20_timers_rw(int rw,float *times);
int r_20_timers_rw1(int rw,float *times); /* obsolete */

Edit ramp.cpp line 292 in ramp_job() where it decides which timers to display

         else if (inbar == 7) {
            if (rb.hdr.tclk == 0x20) r_disp_20_timers(5,25);
            else r_disp_timers(5, 25, pgm.cycle);

Remove ramp.cpp lines 719-737 in r_send() where it sets the timers when sending the ramp

       if (r->hdr.tclk == 0x20) {  /* deceleration cycle */
          times[7] = ncs.slot[ncs.hdr.num_slots-1].t;
          if (ncs.slot[(int)ncs.p1.ncs_rampup_slot].p == 
             ncs.slot[(int)ncs.p1.ncs_fltop_slot].p) {
              /* just take some numbers */
             for (i = 0; i < 7; i++) times[i] = i * times[7] / 7;
          else {
             times[0] = ncs.slot[(int)ncs.p1.ncs_rampup_slot].t;
             times[1] = ncs.slot[(int)ncs.p1.ncs_fltop_slot].t;
              /* D0,D1,D2 */
             times[2] = times[1] + rampp.par.prepare_offset;
             times[3] = ncs.slot[(int)ncs.p1.ncs_rampdown_slot].t;
             times[4] = ncs.slot[(int)ncs.p1.ncs_rampdown_end_slot].t;
             times[6] = ncs.slot[(int)ncs.p1.ncs_rampdown_slot].t; /*used to be set to time[7], changed for new RR switchyard mode*/
             times[5] = times[6] - end_abort;
          sts = r_20_timers_rw(SET,times);

Delete ramp.cpp lines 1778 - 1836 method r_20_timers_rw1() which is already deprecated and not used

Delete ramp.cpp lines 18298 - 1922 methods r_20_timers_rw() and r_disp_20_timers() which are no longer needed

#3 Updated by Kyle Hazelwood almost 6 years ago

Also had to remove the declare of i in the r_send() method that is used for the for loop that was removed.

Compiled PA1665 to a Z page. Will test tomorrow.

#4 Updated by Kyle Hazelwood almost 6 years ago

  • Status changed from Assigned to Closed

Released this morning.

Also available in: Atom PDF