Exemple #1
0
//------------------------------------------------------------------------------
// GetScaleFactors
//------------------------------------------------------------------------------
void GetScaleFactors(float* box_ww,
		     float* box_top)
{

  if (_verbosity > 0)
    {
      printf("\n-------------------------------------------------------------\n\n");
      printf("     box = { njmin, njmax, nbmin, nbmax, }\n");
      printf(" ww  box = {"); for (UInt_t i=0; i<4; i++) printf("%6.0f,", box_ww [i]); printf(" }\n");
      printf(" top box = {"); for (UInt_t i=0; i<4; i++) printf("%6.0f,", box_top[i]); printf(" }");
    }

  float r1b1_data,  r1b2_data,  r2b1_data,  r2b2_data;
  float r1b1_top,   r1b2_top,   r2b1_top,   r2b2_top;
  float r1b1_ww,    r1b2_ww,    r2b1_ww,    r2b2_ww;
  float r1b1_hz,    r1b2_hz,    r2b1_hz,    r2b2_hz;
  float r1b1_wz,    r1b2_wz,    r2b1_wz,    r2b2_wz;
  float r1b1_zz,    r1b2_zz,    r2b1_zz,    r2b2_zz;
  float r1b1_wg,    r1b2_wg,    r2b1_wg,    r2b2_wg;
  float r1b1_zj,    r1b2_zj,    r2b1_zj,    r2b2_zj;
  float r1b1_ttv,   r1b2_ttv,   r2b1_ttv,   r2b2_ttv;
  float r1b1_st,    r1b2_st,    r2b1_st,    r2b2_st;
  float r1b1_fakes, r1b2_fakes, r2b1_fakes, r2b2_fakes;

  GetBoxPopulation("01_Data",      box_ww, box_top, r1b1_data,  r1b2_data,  r2b1_data,  r2b2_data);
  GetBoxPopulation("04_TTTo2L2Nu", box_ww, box_top, r1b1_top,   r1b2_top,   r2b1_top,   r2b2_top);
  GetBoxPopulation("06_WW",        box_ww, box_top, r1b1_ww,    r1b2_ww,    r2b1_ww,    r2b2_ww);
  GetBoxPopulation("14_HZ",        box_ww, box_top, r1b1_hz,    r1b2_hz,    r2b1_hz,    r2b2_hz);
  GetBoxPopulation("02_WZTo3LNu",  box_ww, box_top, r1b1_wz,    r1b2_wz,    r2b1_wz,    r2b2_wz);
  GetBoxPopulation("03_ZZ",        box_ww, box_top, r1b1_zz,    r1b2_zz,    r2b1_zz,    r2b2_zz);
  GetBoxPopulation("11_Wg",        box_ww, box_top, r1b1_wg,    r1b2_wg,    r2b1_wg,    r2b2_wg);
  GetBoxPopulation("07_ZJets",     box_ww, box_top, r1b1_zj,    r1b2_zj,    r2b1_zj,    r2b2_zj);
  GetBoxPopulation("09_TTV",       box_ww, box_top, r1b1_ttv,   r1b2_ttv,   r2b1_ttv,   r2b2_ttv);
  GetBoxPopulation("05_ST",        box_ww, box_top, r1b1_st,    r1b2_st,    r2b1_st,    r2b2_st);
  GetBoxPopulation("00_Fakes",     box_ww, box_top, r1b1_fakes, r1b2_fakes, r2b1_fakes, r2b2_fakes);
  GetBoxPopulation(_signal,      box_ww, box_top, r1b1_fakes, r1b2_fakes, r2b1_fakes, r2b2_fakes);


  float r1b1_bkg = r1b1_hz + r1b1_wz + r1b1_zz + r1b1_wg + r1b1_zj + r1b1_ttv + r1b1_st + r1b1_fakes;
  float r1b2_bkg = r1b2_hz + r1b2_wz + r1b2_zz + r1b2_wg + r1b2_zj + r1b2_ttv + r1b2_st + r1b2_fakes;
  float r2b1_bkg = r2b1_hz + r2b1_wz + r2b1_zz + r2b1_wg + r2b1_zj + r2b1_ttv + r2b1_st + r2b1_fakes;
  float r2b2_bkg = r2b2_hz + r2b2_wz + r2b2_zz + r2b2_wg + r2b2_zj + r2b2_ttv + r2b2_st + r2b2_fakes;

  printf("\n");

  SolveSystem("[ cut-0.2 < MVA < cut     ]", r1b1_data, r1b1_bkg, r1b1_top, r1b1_ww, r1b2_data, r1b2_bkg, r1b2_top, r1b2_ww);
  SolveSystem("[ cut-0.4 < MVA < cut-0.2 ]", r2b1_data, r2b1_bkg, r2b1_top, r2b1_ww, r2b2_data, r2b2_bkg, r2b2_top, r2b2_ww);

  printf("\n");
}
Exemple #2
0
void Interpolate(int n)
{
    delete x;
    delete fv;
    delete xi;
    delete v;
    delete aa;
    delete bb;
    x = new double[n];
    fv = new double[n];
    xi = new double[n+1];
    v = new double[n+1];
    aa = new double[(n+1)*(n+1)];
    bb = new double[n+1];
    
    GetNodesAndValues(n);
    
    for (int i = 1; i <= n+1; i++)
	for (int j = 1; j <= n+1; j++) A(i,j) = 0;
	
    for (int i = 2; i <= n; i++) //make system
    {
	A(i,i-1) = 1.0/(X(i-1)-XI(i-1)) - 1/(XI(i)-XI(i-1));
	A(i,i)   = 1.0/(XI(i)-X(i-1)) + 1.0/(XI(i)-XI(i-1)) + 1.0/(X(i)-XI(i)) + 1.0 /(XI(i+1)-XI(i));
	A(i,i+1) = 1.0/(XI(i+1)-X(i)) - 1.0/(XI(i+1)-XI(i));
	
	B(i) = F(i-1) * (1.0/(X(i-1)-XI(i-1)) + 1.0/(XI(i)-X(i-1)))+
		F(i) * (1.0/(X(i)-XI(i)) + 1.0/(XI(i+1)-X(i)));
    }
    
    // border conditions
    int i;
    i = 1;
    A(i,i) = 1.0/(X(i)-XI(i));
    A(i,i+1) = 1.0/(XI(i+1)-X(i));
    B(i) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i)));

    i = n;
    A(i+1,i) = 1.0/(X(i)-XI(i));
    A(i+1,i+1) = 1.0/(XI(i+1)-X(i));
    B(i+1) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i)));
    
//    PrintMatrix(aa,bb,n+1);
    
    
    SolveSystem(n+1,aa,bb,v);
}
Exemple #3
0
int main()
{
    int n, TC;
    printf("Input dimension (n): ");
    scanf("%d", &n);
    if (n <= 0) return -1;
    printf("Input number of the threads: ");
    scanf("%d", &TC);
    if (n <= 0) return -2;
    double * a = new double[n*n];
    double * b = new double[n];
    double * x = new double[n];
    int * index = new int[n];
    double * ac = new double[n*n];
    double * bc = new double[n*n];
    FillMatrix(a, b, n);
    for (int i = 0; i < n*n; i++) ac[i] = a[i]; // copy of A
    for (int i = 0; i < n; i++) bc[i] = b[i]; // copy of B

    PrintMatrix(a, b, n);

    timeval tv1;
    gettimeofday(&tv1, 0);
    if (!SolveSystem(n, a, b, x, index, TC))
    {
	printf("Bad matrix!\n");
	return -3;
    }
    timeval tv2;
    gettimeofday(&tv2,0);
    double Time = double(tv2.tv_sec)*1000000.0+double(tv2.tv_usec)-double(tv1.tv_sec)*1000000.0+double(tv1.tv_usec);
	
    printf("Result:\n"); PrintSolution(x, n);
    printf("\n\nThreads: %d,\nError: %1.17lf,\nTime=%1.4lf sec.\n", TC, GetError(ac, bc, x, n), Time/1000000.0);
    delete a; delete b;
    delete x; delete index;    
    delete ac;
    return 0;
}
Exemple #4
0
void Interpolate(int n) {
  FreeMem();
  GetMem(n);

  GetMaxMin();
  GetNodesAndValues(n);
  MakeMatrix(n);

  double *ss = new double[n - 2];
  SolveSystem(n - 2, aa, bb, ss);
  for (int i = 2; i < n; i++)
    D(i) = ss[i - 2 - 1];
  delete ss;

  EM(1, 1) = X(1) * X(1) * X(1);
  EM(1, 2) = X(1) * X(1);
  EM(1, 3) = X(1);
  EM(1, 4) = 1.0;

  EM(2, 1) = X(2) * X(2) * X(2);
  EM(2, 2) = X(2) * X(2);
  EM(2, 3) = X(2);
  EM(2, 4) = 1.0;

  EM(3, 1) = X(3) * X(3) * X(3);
  EM(3, 2) = X(3) * X(3);
  EM(3, 3) = X(3);
  EM(3, 4) = 1.0;

  EM(4, 1) = 3.0 * X(3) * X(3);
  EM(4, 2) = 2.0 * X(3);
  EM(4, 3) = X(3);
  EM(4, 4) = 0.0;

  eb[0] = F(1);
  eb[1] = F(2);
  eb[2] = F(3);
  eb[3] = D(3);

  SolveSystem(4, em, eb, exs);

  EM(1, 1) = X(n - 2) * X(n - 2) * X(n - 2);
  EM(1, 2) = X(n - 2) * X(n - 2);
  EM(1, 3) = X(n - 2);
  EM(1, 4) = 1.0;

  EM(2, 1) = X(n - 1) * X(n - 1) * X(n - 1);
  EM(2, 2) = X(n - 1) * X(n - 1);
  EM(2, 3) = X(n - 1);
  EM(2, 4) = 1.0;

  EM(3, 1) = X(n) * X(n) * X(n);
  EM(3, 2) = X(n) * X(n);
  EM(3, 3) = X(n);
  EM(3, 4) = 1.0;

  EM(4, 1) = 3.0 * X(n - 2) * X(n - 2);
  EM(4, 2) = 2.0 * X(n - 2);
  EM(4, 3) = X(n - 2);
  EM(4, 4) = 0.0;

  eb[0] = F(n - 2);
  eb[1] = F(n - 1);
  eb[2] = F(n);
  eb[3] = D(n - 2);

  SolveSystem(4, em, eb, exe);
}