ROOT logo
// some global var/constants
const Int_t kNSM = 12; // 
const Int_t kNRCU = 2;
const Int_t kNDTC = 40; // links for full SRU (corresponding to two readout crates or RCUs)
AliCaloAltroMapping *fMapping[4]; // 1 for each side (A/C) and each RCU (0/1), i.e. 2*2 total
const Int_t kNBranch = 2;
const Int_t kNFEC = 10; // 0..9, when including LED Ref
const Int_t kNChip = 5; // really 0,2..4, i.e. skip #1
const Int_t kNChan = 16;
Float_t fMeanPed[kNSM][kNRCU][kNBranch][kNFEC][kNChip][kNChan];
Float_t fRmsPed[kNSM][kNRCU][kNBranch][kNFEC][kNChip][kNChan];
//
const int kNStrips = 24; // per SM
Int_t fHWAddrLEDRef[kNStrips][2]; // [2] is for Low/High gain

const Bool_t kDebug = kFALSE;
const Float_t kBadRMS = 20;

// help methods
void GetPedVal(const Int_t iSM, const Int_t igain, const TProfile2D *h2);
void GetPedValLEDRef(const Int_t iSM, const Int_t igain, const TProfile *h);
void PrintScript(const Int_t runno);
void Clear();
Int_t GetHWAddress(Int_t iside, Int_t icol, Int_t irow, Int_t igain);
Int_t GetHWAddressLEDRef(Int_t istrip, Int_t igain);
void DecodeHWAddress(Int_t hwAddr, Int_t & branch, Int_t & FEC, Int_t & chip, Int_t & chan);
void GetMapping();
void CreateMappingLEDRef();

// main method
void 
GeneratePedestalScriptSRU(const char * filename = "EMCALPED.root") // from DA node
{
  // get the DA info/object
  TFile *file = TFile::Open(filename); 
  //TMP  AliCaloCalibPedestal *emcCalibPedestal = AliCDBEntry->GetObject();
  if (kDebug) {
    file->ls();
  }
  int runno = emcCalibPedestal->GetRunNumber();

  // Get mapping file info, and clear arrays
  Clear();
  GetMapping();
  CreateMappingLEDRef();

  // Store the pedestal info
  for (Int_t iSM=0; iSM<kNSM; iSM++) {
    GetPedVal( iSM, 0, emcCalibPedestal->GetPedProfileLowGain(iSM) );
    GetPedVal( iSM, 1, emcCalibPedestal->GetPedProfileHighGain(iSM) );
    GetPedValLEDRef( iSM, 0, emcCalibPedestal->GetPedLEDRefProfileLowGain(iSM) );
    GetPedValLEDRef( iSM, 1, emcCalibPedestal->GetPedLEDRefProfileHighGain(iSM) );
  }

  // Generate the needed scripts
  PrintScript(runno);

}

void 
GetPedVal(const Int_t iSM, const Int_t igain, const TProfile2D *h2)
{
  Int_t isect = iSM / 2; //
  Int_t iside = iSM % 2; // A or C side
  Int_t nCols = h2->GetNbinsX();
  Int_t nRows = h2->GetNbinsY();
  if (kDebug) {
    printf("GetPedVal: iSM %d isect %d iside %d igain %d nRows %d nCols %d\n",
	   iSM, isect, iside, igain, nRows, nCols);
  }
  Int_t hwAddress = 0;
  Int_t iRCU = 0;
  Int_t branch = 0;
  Int_t FEC = 0;
  Int_t chip = 0;
  Int_t chan = 0;

  Int_t icol = 0;
  Int_t irow = 0;
  Int_t bin = 0;

  for (icol=0; icol<nCols; icol++) {
    for (irow=0; irow<nRows; irow++) {

      hwAddress = GetHWAddress(iside, icol, irow, igain, iRCU);
      DecodeHWAddress(hwAddress, branch, FEC, chip, chan);  
      bin = h2->FindBin(icol, irow);
            
      // store the values
      fMeanPed[iSM][iRCU][branch][FEC][chip][chan] = h2->GetBinContent(bin);
      fRmsPed[iSM][iRCU][branch][FEC][chip][chan] = h2->GetBinError(bin);

      // report bad RMS channels:
      if (h2->GetBinError(bin) > kBadRMS) {
	printf(" bad pedestal RMS: iSM %d icol %d irow %d igain %d iRCU %d branch %d FEC %d chip %d chan %d - mean %4.1f rms %4.1f\n", 
	       iSM, icol, irow, igain, iRCU, branch, FEC, chip, chan,
	       h2->GetBinContent(bin), h2->GetBinError(bin));
      }
    }
  }

  return;
}


void 
GetPedValLEDRef(const Int_t iSM, const Int_t igain, const TProfile *h)
{
  Int_t isect = iSM / 2; //
  Int_t iside = iSM % 2; // A or C side
  Int_t nStrips = h->GetNbinsX();

  if (kDebug) {
    printf("GetPedValLEDRef: iSM %d isect %d iside %d igain %d nStrips %d\n",
	   iSM, isect, iside, igain, nStrips);
  }
  Int_t hwAddress = 0;
  Int_t iRCU = 0; // always true for LED Ref FEE
  Int_t branch = 0;
  Int_t FEC = 0;
  Int_t chip = 0;
  Int_t chan = 0;

  Int_t icol = 0;
  Int_t irow = 0;
  Int_t bin = 0;

  for (int istrip=0; istrip<nStrips; istrip++) {

    hwAddress = GetHWAddressLEDRef(istrip, igain);
    DecodeHWAddress(hwAddress, branch, FEC, chip, chan);  
    bin = h->FindBin(istrip);
            
    // store the values
    fMeanPed[iSM][iRCU][branch][FEC][chip][chan] = h->GetBinContent(bin);
    fRmsPed[iSM][iRCU][branch][FEC][chip][chan] = h->GetBinError(bin);
  }

  return;
}

void 
PrintScript(const int runno)
{
  const char * sideStr[] = {"A","C"};
  const char * branchStr[] = {"A","B"};
  int VFPED = 0x06;
  int SRUAltroWrite = 0x40000000; 
  int Port = 0x1001; // 4097

  char dirname[40];
  sprintf(dirname,"scriptsSRU_Run%d", runno);

  char cmd[500];
  sprintf(cmd,"mkdir -p %s/SM{A,C}{0,1,2,3,4,5}", dirname);
  gSystem->Exec(cmd);

  sprintf(cmd,"echo \"cp info.txt GeneratePedestalScriptSRU.C %s/.\" > scp.sh", dirname);
  gSystem->Exec(cmd);
  sprintf(cmd,"echo \"scp -r -p %s aldaqacr50:pedestals/.\" >> scp.sh", dirname);
  gSystem->Exec(cmd);
  sprintf(cmd,"echo \"ssh -t aldaqacr50 \'cd pedestals; scp -r -p %s emc@alidcscom702:srudcs/scripts/pedestals/.\'\" >> scp.sh", dirname);
  gSystem->Exec(cmd);

  char filename[100];
  char scriptLine[200];

  Int_t iSM = 0;
  Int_t iRCU = 0;
  Int_t ibranch = 0;
  Int_t iFEC = 0;
  Int_t ichip = 0;
  Int_t ichan = 0;
  Int_t Ped = 0;
  Int_t iDTC = 0;

  for (iSM=0; iSM<kNSM; iSM++) {
    int iside = iSM % 2;
    int isect = iSM / 2;

    char IP[100];
    if (iSM == 0) { sprintf(IP, "10.160.132.100"); } // SMA0 
    else if (iSM == 1) { sprintf(IP, "10.160.132.102"); } // SMC0
    else if (iSM == 2) { sprintf(IP, "10.160.132.104"); } // SMA1 
    else if (iSM == 3) { sprintf(IP, "10.160.132.106"); } // SMC1
    else if (iSM == 4) { sprintf(IP, "10.160.132.108"); } // SMA2 
    else if (iSM == 5) { sprintf(IP, "10.160.132.110"); } // SMC2
    else if (iSM == 6) { sprintf(IP, "10.160.132.112"); } // SMA3 
    else if (iSM == 7) { sprintf(IP, "10.160.132.114"); } // SMC3
    else if (iSM == 8) { sprintf(IP, "10.160.132.116"); } // SMA4 
    else if (iSM == 9) { sprintf(IP, "10.160.132.118"); } // SMC4
    else if (iSM == 10) { sprintf(IP, "10.160.36.155"); } // SMA5
    else if (iSM == 11) { sprintf(IP, "10.160.36.156"); } // SMC5

    // only do instrumented parts..
    int activeDTC[kNDTC] = {0};
    for (iDTC=0; iDTC<kNDTC; iDTC++) {
      if (iDTC==10 || iDTC==20 || iDTC==30) { // skip TRU 
	activeDTC[iDTC] = 0;
      } 
      else {
	if (iSM<10) { // not special third SM
	  activeDTC[iDTC] = 1;
	}
	else {
	  if (iSM==10) { // SMA5
	    if (iDTC<14) { activeDTC[iDTC] = 1; }
	    else { activeDTC[iDTC] = 0; }
	  }
	  else if (iSM==11) { // SMC5
	    if (iDTC==0 || iDTC>=27) { activeDTC[iDTC] = 1; }
	    else { activeDTC[iDTC] = 0; }
	  }

	}
      }
    }

    // OK, let's generate the files for all active FECs/DTCs
    for (iDTC=0; iDTC<kNDTC; iDTC++) {
      if (activeDTC[iDTC] == 0) { continue; }
      sprintf(filename, "%s/SM%1s%d/set_ped_DTC%02d.txt", 
	      dirname, sideStr[iside], isect, iDTC);
      ofstream fout(filename);

      iRCU = iDTC / 20;
      ibranch = (iDTC % 20) / 10;
      iFEC = iDTC % 10;
      int ipos = iFEC + 10*ibranch;

      // write DTC file header..
      sprintf(scriptLine, "%s # IP\n%d       #UDP port", IP, Port);
      fout << scriptLine << endl;

      int dtcselUpper = 0;
      int dtcselLower = 0;
      if (iRCU == 0) {
        dtcselLower = (1 << ipos);
      }
      else { // crate == 1
        dtcselUpper = (1 << ipos);
      }
      sprintf(scriptLine, "%08x # DTC SEL Upper\n%08x # DTC SEL Lower",
	      dtcselUpper, dtcselLower);
      fout << scriptLine << endl;
      sprintf(scriptLine, "%08x # FEE GTL Address\n%08x # Branch %s, Card %d",
	      0x3, iFEC + 16*ibranch, branchStr[ibranch], iFEC);
      fout << scriptLine << endl;
      // end header

      for (ichip=0; ichip<kNChip; ichip++) { // ALTRO 0,2,3,4
	if (ichip!=1) {
	  for (ichan=0; ichan<kNChan; ichan++) {

	    if (iFEC!=0 || (ichan<8 || ichan>11)) {

	      Ped = TMath::Nint(fMeanPed[iSM][iRCU][ibranch][iFEC][ichip][ichan]);
	      // raise Ped value to max for channels with exceptionally large RMS
	      if (fRmsPed[iSM][iRCU][ibranch][iFEC][ichip][ichan] > kBadRMS) {
		printf(" bad pedestal RMS: iSM %d iRCU %d ibranch %d iFEC %d ichip %d ichan %d - raising from %d to 0x3ff\n", 
		       iSM, iRCU, ibranch, iFEC, ichip, ichan, Ped);
		Ped = 0x3ff;
	      }
	      // 
	      int writeAddr = SRUAltroWrite | (ibranch << 16) | (iFEC << 12) | (ichip << 9) | (ichan << 5) | VFPED; 
	      sprintf(scriptLine, "%08x # Branch %s, Card %d, Altro %d, Chan %d", 
		      writeAddr, branchStr[ibranch], iFEC, ichip, ichan);
	      fout << scriptLine << endl;
	      
	      int writeVal = Ped; 
	      sprintf(scriptLine, "%08x # Pedestal 0x%x = %d", 
		       writeVal, Ped, Ped);
	      fout << scriptLine << endl;
	      
	    }
	  }
	}
      } // chip

      fout.close();
    } // iDTC
  }// iSM

  return;
}

void 
Clear()
{
  for (Int_t iSM=0; iSM<kNSM; iSM++) {
    for (Int_t iRCU=0; iRCU<kNRCU; iRCU++) {
      for (Int_t ibranch=0; ibranch<kNBranch; ibranch++) {
	for (Int_t iFEC=0; iFEC<kNFEC; iFEC++) {
	  for (Int_t ichip=0; ichip<kNChip; ichip++) {
	    for (Int_t ichan=0; ichan<kNChan; ichan++) {
	      fMeanPed[iSM][iRCU][ibranch][iFEC][ichip][ichan] = 0;
	      fRmsPed[iSM][iRCU][ibranch][iFEC][ichip][ichan] = 0;
	    }
	  }
	}
      }
    }
  }

  for (int istrip=0; istrip<kNStrips; istrip++) {
    fHWAddrLEDRef[istrip][0] = 0; 
    fHWAddrLEDRef[istrip][1] = 0; 
  }

  return;
}

void 
DecodeHWAddress(Int_t hwAddr, Int_t & branch, Int_t & FEC, Int_t & chip, Int_t & chan)
{
  chan = hwAddr & 0xf;
  chip = (hwAddr >> 4) & 0x7;
  FEC = (hwAddr >> 7) & 0xf;
  branch = (hwAddr >> 11) & 0x1;
  return;
}

Int_t 
GetHWAddress(Int_t iside, Int_t icol, Int_t irow, Int_t igain, Int_t & iRCU)
{
  iRCU = -111;

  //RCU0
  if (0<=irow&&irow<8) iRCU=0; // first cable row
  else if (8<=irow&&irow<16 && 0<=icol&&icol<24) iRCU=0; // first half; 
  //second cable row
  //RCU1
  else if(8<=irow&&irow<16 && 24<=icol&&icol<48) iRCU=1; // second half; 
  //second cable row
  else if(16<=irow&&irow<24) iRCU=1; // third cable row

  // swap for odd=C side, to allow us to cable both sides the same
  Int_t iRCUSide = iRCU; 
 if (iside == 1) {
    iRCU = 1 - iRCU;
    iRCUSide = iRCU + 2; // to make it map file index
  }
  Int_t hwAddress = fMapping[iRCUSide]->GetHWAddress(irow, icol, igain);

  return hwAddress;
}

Int_t 
GetHWAddressLEDRef(Int_t istrip, Int_t igain)
{
  Int_t iRCU = 0; // for both sides; LED ref info is the same for both sides
  Int_t caloflag = 3; // AliCaloRawStreamV3::kLEDMonData;
 
  Int_t hwAddress = fHWAddrLEDRef[istrip][igain];

  return hwAddress;
}

void 
GetMapping()
{  
  TString sides[]={"A","C"};
  // Read mapping files from $ALICE_ROOT/CALO/mapping/*.data
  TString path = gSystem->Getenv("ALICE_ROOT");
  path += "/EMCAL/mapping/RCU";
  TString path2;
  for(Int_t j = 0; j < 2; j++){ // sides
    for(Int_t i = 0; i < 2; i++) { // RCU
      path2 = path;
      path2 += i;
      path2 += sides[j];
      path2 += ".data";
      if (kDebug) { printf("Mapping file: %s\n",path2.Data()); }
      fMapping[j*2 + i] = new AliCaloAltroMapping(path2.Data());
    }
  }
  return;
}

void 
CreateMappingLEDRef()
{ 
  Int_t iRCU = 0; // for both sides; LED ref info is the same for both sides
  Int_t caloflag = 3; // AliCaloRawStreamV3::kLEDMonData;

  Int_t maxAddr = 1 << 7; // LED Ref FEE is in FEC pos 0, i.e. addr space 0..127

  int nLEDRefFEEChan = 0;

  Int_t branch = 0;
  Int_t FEC = 0;
  Int_t chip = 0;
  Int_t chan = 0;
  for (int hwaddr = 0; hwaddr<maxAddr; hwaddr++) {

    DecodeHWAddress(hwaddr, branch, FEC, chip, chan);  
    if ( (chip!=1 && chip<kNChip) &&  // ALTROs 0,2,3,4
	 (chan<8 || chan>11) ) { // actual installed LED Ref FEE channels

      int istrip = fMapping[iRCU]->GetPad(hwaddr);
      int igain = fMapping[iRCU]->GetPadRow(hwaddr);
      int iflag = fMapping[iRCU]->GetSector(hwaddr);
      if (iflag == caloflag) {
	fHWAddrLEDRef[istrip][igain] = hwaddr; 
	nLEDRefFEEChan++;
      }
    }
  }

  if (kDebug) { cout << " nLEDRefFEEChan " << nLEDRefFEEChan << endl; }
}
 GeneratePedestalScriptSRU.C:1
 GeneratePedestalScriptSRU.C:2
 GeneratePedestalScriptSRU.C:3
 GeneratePedestalScriptSRU.C:4
 GeneratePedestalScriptSRU.C:5
 GeneratePedestalScriptSRU.C:6
 GeneratePedestalScriptSRU.C:7
 GeneratePedestalScriptSRU.C:8
 GeneratePedestalScriptSRU.C:9
 GeneratePedestalScriptSRU.C:10
 GeneratePedestalScriptSRU.C:11
 GeneratePedestalScriptSRU.C:12
 GeneratePedestalScriptSRU.C:13
 GeneratePedestalScriptSRU.C:14
 GeneratePedestalScriptSRU.C:15
 GeneratePedestalScriptSRU.C:16
 GeneratePedestalScriptSRU.C:17
 GeneratePedestalScriptSRU.C:18
 GeneratePedestalScriptSRU.C:19
 GeneratePedestalScriptSRU.C:20
 GeneratePedestalScriptSRU.C:21
 GeneratePedestalScriptSRU.C:22
 GeneratePedestalScriptSRU.C:23
 GeneratePedestalScriptSRU.C:24
 GeneratePedestalScriptSRU.C:25
 GeneratePedestalScriptSRU.C:26
 GeneratePedestalScriptSRU.C:27
 GeneratePedestalScriptSRU.C:28
 GeneratePedestalScriptSRU.C:29
 GeneratePedestalScriptSRU.C:30
 GeneratePedestalScriptSRU.C:31
 GeneratePedestalScriptSRU.C:32
 GeneratePedestalScriptSRU.C:33
 GeneratePedestalScriptSRU.C:34
 GeneratePedestalScriptSRU.C:35
 GeneratePedestalScriptSRU.C:36
 GeneratePedestalScriptSRU.C:37
 GeneratePedestalScriptSRU.C:38
 GeneratePedestalScriptSRU.C:39
 GeneratePedestalScriptSRU.C:40
 GeneratePedestalScriptSRU.C:41
 GeneratePedestalScriptSRU.C:42
 GeneratePedestalScriptSRU.C:43
 GeneratePedestalScriptSRU.C:44
 GeneratePedestalScriptSRU.C:45
 GeneratePedestalScriptSRU.C:46
 GeneratePedestalScriptSRU.C:47
 GeneratePedestalScriptSRU.C:48
 GeneratePedestalScriptSRU.C:49
 GeneratePedestalScriptSRU.C:50
 GeneratePedestalScriptSRU.C:51
 GeneratePedestalScriptSRU.C:52
 GeneratePedestalScriptSRU.C:53
 GeneratePedestalScriptSRU.C:54
 GeneratePedestalScriptSRU.C:55
 GeneratePedestalScriptSRU.C:56
 GeneratePedestalScriptSRU.C:57
 GeneratePedestalScriptSRU.C:58
 GeneratePedestalScriptSRU.C:59
 GeneratePedestalScriptSRU.C:60
 GeneratePedestalScriptSRU.C:61
 GeneratePedestalScriptSRU.C:62
 GeneratePedestalScriptSRU.C:63
 GeneratePedestalScriptSRU.C:64
 GeneratePedestalScriptSRU.C:65
 GeneratePedestalScriptSRU.C:66
 GeneratePedestalScriptSRU.C:67
 GeneratePedestalScriptSRU.C:68
 GeneratePedestalScriptSRU.C:69
 GeneratePedestalScriptSRU.C:70
 GeneratePedestalScriptSRU.C:71
 GeneratePedestalScriptSRU.C:72
 GeneratePedestalScriptSRU.C:73
 GeneratePedestalScriptSRU.C:74
 GeneratePedestalScriptSRU.C:75
 GeneratePedestalScriptSRU.C:76
 GeneratePedestalScriptSRU.C:77
 GeneratePedestalScriptSRU.C:78
 GeneratePedestalScriptSRU.C:79
 GeneratePedestalScriptSRU.C:80
 GeneratePedestalScriptSRU.C:81
 GeneratePedestalScriptSRU.C:82
 GeneratePedestalScriptSRU.C:83
 GeneratePedestalScriptSRU.C:84
 GeneratePedestalScriptSRU.C:85
 GeneratePedestalScriptSRU.C:86
 GeneratePedestalScriptSRU.C:87
 GeneratePedestalScriptSRU.C:88
 GeneratePedestalScriptSRU.C:89
 GeneratePedestalScriptSRU.C:90
 GeneratePedestalScriptSRU.C:91
 GeneratePedestalScriptSRU.C:92
 GeneratePedestalScriptSRU.C:93
 GeneratePedestalScriptSRU.C:94
 GeneratePedestalScriptSRU.C:95
 GeneratePedestalScriptSRU.C:96
 GeneratePedestalScriptSRU.C:97
 GeneratePedestalScriptSRU.C:98
 GeneratePedestalScriptSRU.C:99
 GeneratePedestalScriptSRU.C:100
 GeneratePedestalScriptSRU.C:101
 GeneratePedestalScriptSRU.C:102
 GeneratePedestalScriptSRU.C:103
 GeneratePedestalScriptSRU.C:104
 GeneratePedestalScriptSRU.C:105
 GeneratePedestalScriptSRU.C:106
 GeneratePedestalScriptSRU.C:107
 GeneratePedestalScriptSRU.C:108
 GeneratePedestalScriptSRU.C:109
 GeneratePedestalScriptSRU.C:110
 GeneratePedestalScriptSRU.C:111
 GeneratePedestalScriptSRU.C:112
 GeneratePedestalScriptSRU.C:113
 GeneratePedestalScriptSRU.C:114
 GeneratePedestalScriptSRU.C:115
 GeneratePedestalScriptSRU.C:116
 GeneratePedestalScriptSRU.C:117
 GeneratePedestalScriptSRU.C:118
 GeneratePedestalScriptSRU.C:119
 GeneratePedestalScriptSRU.C:120
 GeneratePedestalScriptSRU.C:121
 GeneratePedestalScriptSRU.C:122
 GeneratePedestalScriptSRU.C:123
 GeneratePedestalScriptSRU.C:124
 GeneratePedestalScriptSRU.C:125
 GeneratePedestalScriptSRU.C:126
 GeneratePedestalScriptSRU.C:127
 GeneratePedestalScriptSRU.C:128
 GeneratePedestalScriptSRU.C:129
 GeneratePedestalScriptSRU.C:130
 GeneratePedestalScriptSRU.C:131
 GeneratePedestalScriptSRU.C:132
 GeneratePedestalScriptSRU.C:133
 GeneratePedestalScriptSRU.C:134
 GeneratePedestalScriptSRU.C:135
 GeneratePedestalScriptSRU.C:136
 GeneratePedestalScriptSRU.C:137
 GeneratePedestalScriptSRU.C:138
 GeneratePedestalScriptSRU.C:139
 GeneratePedestalScriptSRU.C:140
 GeneratePedestalScriptSRU.C:141
 GeneratePedestalScriptSRU.C:142
 GeneratePedestalScriptSRU.C:143
 GeneratePedestalScriptSRU.C:144
 GeneratePedestalScriptSRU.C:145
 GeneratePedestalScriptSRU.C:146
 GeneratePedestalScriptSRU.C:147
 GeneratePedestalScriptSRU.C:148
 GeneratePedestalScriptSRU.C:149
 GeneratePedestalScriptSRU.C:150
 GeneratePedestalScriptSRU.C:151
 GeneratePedestalScriptSRU.C:152
 GeneratePedestalScriptSRU.C:153
 GeneratePedestalScriptSRU.C:154
 GeneratePedestalScriptSRU.C:155
 GeneratePedestalScriptSRU.C:156
 GeneratePedestalScriptSRU.C:157
 GeneratePedestalScriptSRU.C:158
 GeneratePedestalScriptSRU.C:159
 GeneratePedestalScriptSRU.C:160
 GeneratePedestalScriptSRU.C:161
 GeneratePedestalScriptSRU.C:162
 GeneratePedestalScriptSRU.C:163
 GeneratePedestalScriptSRU.C:164
 GeneratePedestalScriptSRU.C:165
 GeneratePedestalScriptSRU.C:166
 GeneratePedestalScriptSRU.C:167
 GeneratePedestalScriptSRU.C:168
 GeneratePedestalScriptSRU.C:169
 GeneratePedestalScriptSRU.C:170
 GeneratePedestalScriptSRU.C:171
 GeneratePedestalScriptSRU.C:172
 GeneratePedestalScriptSRU.C:173
 GeneratePedestalScriptSRU.C:174
 GeneratePedestalScriptSRU.C:175
 GeneratePedestalScriptSRU.C:176
 GeneratePedestalScriptSRU.C:177
 GeneratePedestalScriptSRU.C:178
 GeneratePedestalScriptSRU.C:179
 GeneratePedestalScriptSRU.C:180
 GeneratePedestalScriptSRU.C:181
 GeneratePedestalScriptSRU.C:182
 GeneratePedestalScriptSRU.C:183
 GeneratePedestalScriptSRU.C:184
 GeneratePedestalScriptSRU.C:185
 GeneratePedestalScriptSRU.C:186
 GeneratePedestalScriptSRU.C:187
 GeneratePedestalScriptSRU.C:188
 GeneratePedestalScriptSRU.C:189
 GeneratePedestalScriptSRU.C:190
 GeneratePedestalScriptSRU.C:191
 GeneratePedestalScriptSRU.C:192
 GeneratePedestalScriptSRU.C:193
 GeneratePedestalScriptSRU.C:194
 GeneratePedestalScriptSRU.C:195
 GeneratePedestalScriptSRU.C:196
 GeneratePedestalScriptSRU.C:197
 GeneratePedestalScriptSRU.C:198
 GeneratePedestalScriptSRU.C:199
 GeneratePedestalScriptSRU.C:200
 GeneratePedestalScriptSRU.C:201
 GeneratePedestalScriptSRU.C:202
 GeneratePedestalScriptSRU.C:203
 GeneratePedestalScriptSRU.C:204
 GeneratePedestalScriptSRU.C:205
 GeneratePedestalScriptSRU.C:206
 GeneratePedestalScriptSRU.C:207
 GeneratePedestalScriptSRU.C:208
 GeneratePedestalScriptSRU.C:209
 GeneratePedestalScriptSRU.C:210
 GeneratePedestalScriptSRU.C:211
 GeneratePedestalScriptSRU.C:212
 GeneratePedestalScriptSRU.C:213
 GeneratePedestalScriptSRU.C:214
 GeneratePedestalScriptSRU.C:215
 GeneratePedestalScriptSRU.C:216
 GeneratePedestalScriptSRU.C:217
 GeneratePedestalScriptSRU.C:218
 GeneratePedestalScriptSRU.C:219
 GeneratePedestalScriptSRU.C:220
 GeneratePedestalScriptSRU.C:221
 GeneratePedestalScriptSRU.C:222
 GeneratePedestalScriptSRU.C:223
 GeneratePedestalScriptSRU.C:224
 GeneratePedestalScriptSRU.C:225
 GeneratePedestalScriptSRU.C:226
 GeneratePedestalScriptSRU.C:227
 GeneratePedestalScriptSRU.C:228
 GeneratePedestalScriptSRU.C:229
 GeneratePedestalScriptSRU.C:230
 GeneratePedestalScriptSRU.C:231
 GeneratePedestalScriptSRU.C:232
 GeneratePedestalScriptSRU.C:233
 GeneratePedestalScriptSRU.C:234
 GeneratePedestalScriptSRU.C:235
 GeneratePedestalScriptSRU.C:236
 GeneratePedestalScriptSRU.C:237
 GeneratePedestalScriptSRU.C:238
 GeneratePedestalScriptSRU.C:239
 GeneratePedestalScriptSRU.C:240
 GeneratePedestalScriptSRU.C:241
 GeneratePedestalScriptSRU.C:242
 GeneratePedestalScriptSRU.C:243
 GeneratePedestalScriptSRU.C:244
 GeneratePedestalScriptSRU.C:245
 GeneratePedestalScriptSRU.C:246
 GeneratePedestalScriptSRU.C:247
 GeneratePedestalScriptSRU.C:248
 GeneratePedestalScriptSRU.C:249
 GeneratePedestalScriptSRU.C:250
 GeneratePedestalScriptSRU.C:251
 GeneratePedestalScriptSRU.C:252
 GeneratePedestalScriptSRU.C:253
 GeneratePedestalScriptSRU.C:254
 GeneratePedestalScriptSRU.C:255
 GeneratePedestalScriptSRU.C:256
 GeneratePedestalScriptSRU.C:257
 GeneratePedestalScriptSRU.C:258
 GeneratePedestalScriptSRU.C:259
 GeneratePedestalScriptSRU.C:260
 GeneratePedestalScriptSRU.C:261
 GeneratePedestalScriptSRU.C:262
 GeneratePedestalScriptSRU.C:263
 GeneratePedestalScriptSRU.C:264
 GeneratePedestalScriptSRU.C:265
 GeneratePedestalScriptSRU.C:266
 GeneratePedestalScriptSRU.C:267
 GeneratePedestalScriptSRU.C:268
 GeneratePedestalScriptSRU.C:269
 GeneratePedestalScriptSRU.C:270
 GeneratePedestalScriptSRU.C:271
 GeneratePedestalScriptSRU.C:272
 GeneratePedestalScriptSRU.C:273
 GeneratePedestalScriptSRU.C:274
 GeneratePedestalScriptSRU.C:275
 GeneratePedestalScriptSRU.C:276
 GeneratePedestalScriptSRU.C:277
 GeneratePedestalScriptSRU.C:278
 GeneratePedestalScriptSRU.C:279
 GeneratePedestalScriptSRU.C:280
 GeneratePedestalScriptSRU.C:281
 GeneratePedestalScriptSRU.C:282
 GeneratePedestalScriptSRU.C:283
 GeneratePedestalScriptSRU.C:284
 GeneratePedestalScriptSRU.C:285
 GeneratePedestalScriptSRU.C:286
 GeneratePedestalScriptSRU.C:287
 GeneratePedestalScriptSRU.C:288
 GeneratePedestalScriptSRU.C:289
 GeneratePedestalScriptSRU.C:290
 GeneratePedestalScriptSRU.C:291
 GeneratePedestalScriptSRU.C:292
 GeneratePedestalScriptSRU.C:293
 GeneratePedestalScriptSRU.C:294
 GeneratePedestalScriptSRU.C:295
 GeneratePedestalScriptSRU.C:296
 GeneratePedestalScriptSRU.C:297
 GeneratePedestalScriptSRU.C:298
 GeneratePedestalScriptSRU.C:299
 GeneratePedestalScriptSRU.C:300
 GeneratePedestalScriptSRU.C:301
 GeneratePedestalScriptSRU.C:302
 GeneratePedestalScriptSRU.C:303
 GeneratePedestalScriptSRU.C:304
 GeneratePedestalScriptSRU.C:305
 GeneratePedestalScriptSRU.C:306
 GeneratePedestalScriptSRU.C:307
 GeneratePedestalScriptSRU.C:308
 GeneratePedestalScriptSRU.C:309
 GeneratePedestalScriptSRU.C:310
 GeneratePedestalScriptSRU.C:311
 GeneratePedestalScriptSRU.C:312
 GeneratePedestalScriptSRU.C:313
 GeneratePedestalScriptSRU.C:314
 GeneratePedestalScriptSRU.C:315
 GeneratePedestalScriptSRU.C:316
 GeneratePedestalScriptSRU.C:317
 GeneratePedestalScriptSRU.C:318
 GeneratePedestalScriptSRU.C:319
 GeneratePedestalScriptSRU.C:320
 GeneratePedestalScriptSRU.C:321
 GeneratePedestalScriptSRU.C:322
 GeneratePedestalScriptSRU.C:323
 GeneratePedestalScriptSRU.C:324
 GeneratePedestalScriptSRU.C:325
 GeneratePedestalScriptSRU.C:326
 GeneratePedestalScriptSRU.C:327
 GeneratePedestalScriptSRU.C:328
 GeneratePedestalScriptSRU.C:329
 GeneratePedestalScriptSRU.C:330
 GeneratePedestalScriptSRU.C:331
 GeneratePedestalScriptSRU.C:332
 GeneratePedestalScriptSRU.C:333
 GeneratePedestalScriptSRU.C:334
 GeneratePedestalScriptSRU.C:335
 GeneratePedestalScriptSRU.C:336
 GeneratePedestalScriptSRU.C:337
 GeneratePedestalScriptSRU.C:338
 GeneratePedestalScriptSRU.C:339
 GeneratePedestalScriptSRU.C:340
 GeneratePedestalScriptSRU.C:341
 GeneratePedestalScriptSRU.C:342
 GeneratePedestalScriptSRU.C:343
 GeneratePedestalScriptSRU.C:344
 GeneratePedestalScriptSRU.C:345
 GeneratePedestalScriptSRU.C:346
 GeneratePedestalScriptSRU.C:347
 GeneratePedestalScriptSRU.C:348
 GeneratePedestalScriptSRU.C:349
 GeneratePedestalScriptSRU.C:350
 GeneratePedestalScriptSRU.C:351
 GeneratePedestalScriptSRU.C:352
 GeneratePedestalScriptSRU.C:353
 GeneratePedestalScriptSRU.C:354
 GeneratePedestalScriptSRU.C:355
 GeneratePedestalScriptSRU.C:356
 GeneratePedestalScriptSRU.C:357
 GeneratePedestalScriptSRU.C:358
 GeneratePedestalScriptSRU.C:359
 GeneratePedestalScriptSRU.C:360
 GeneratePedestalScriptSRU.C:361
 GeneratePedestalScriptSRU.C:362
 GeneratePedestalScriptSRU.C:363
 GeneratePedestalScriptSRU.C:364
 GeneratePedestalScriptSRU.C:365
 GeneratePedestalScriptSRU.C:366
 GeneratePedestalScriptSRU.C:367
 GeneratePedestalScriptSRU.C:368
 GeneratePedestalScriptSRU.C:369
 GeneratePedestalScriptSRU.C:370
 GeneratePedestalScriptSRU.C:371
 GeneratePedestalScriptSRU.C:372
 GeneratePedestalScriptSRU.C:373
 GeneratePedestalScriptSRU.C:374
 GeneratePedestalScriptSRU.C:375
 GeneratePedestalScriptSRU.C:376
 GeneratePedestalScriptSRU.C:377
 GeneratePedestalScriptSRU.C:378
 GeneratePedestalScriptSRU.C:379
 GeneratePedestalScriptSRU.C:380
 GeneratePedestalScriptSRU.C:381
 GeneratePedestalScriptSRU.C:382
 GeneratePedestalScriptSRU.C:383
 GeneratePedestalScriptSRU.C:384
 GeneratePedestalScriptSRU.C:385
 GeneratePedestalScriptSRU.C:386
 GeneratePedestalScriptSRU.C:387
 GeneratePedestalScriptSRU.C:388
 GeneratePedestalScriptSRU.C:389
 GeneratePedestalScriptSRU.C:390
 GeneratePedestalScriptSRU.C:391
 GeneratePedestalScriptSRU.C:392
 GeneratePedestalScriptSRU.C:393
 GeneratePedestalScriptSRU.C:394
 GeneratePedestalScriptSRU.C:395
 GeneratePedestalScriptSRU.C:396
 GeneratePedestalScriptSRU.C:397
 GeneratePedestalScriptSRU.C:398
 GeneratePedestalScriptSRU.C:399
 GeneratePedestalScriptSRU.C:400
 GeneratePedestalScriptSRU.C:401
 GeneratePedestalScriptSRU.C:402
 GeneratePedestalScriptSRU.C:403
 GeneratePedestalScriptSRU.C:404
 GeneratePedestalScriptSRU.C:405
 GeneratePedestalScriptSRU.C:406
 GeneratePedestalScriptSRU.C:407
 GeneratePedestalScriptSRU.C:408
 GeneratePedestalScriptSRU.C:409
 GeneratePedestalScriptSRU.C:410
 GeneratePedestalScriptSRU.C:411
 GeneratePedestalScriptSRU.C:412