2014년 11월 26일 수요일

LHC는 어떻게 작동하는가?- 1. 자기장에 대해서



  1.  현재 세계에서 가장 강력한 입자가속기는 CERN의 LHC(Large Hadron Collider)다. 질량중심 에너지가 8TeV에 달하는 충돌실험을 통해 힉스입자를 발견했으며, 2015년부터는 13TeV의 에너지로 Run을 새롭게 시작한다. 몇번의 시리즈를 통해 LHC라는 거대한 가속기가 어떻게 동작하는지 원리를 살펴보려 한다.   
  2.  많이들 사진을 통해 보았겠지만 LHC는 그 길이가 약 27km나 되는 원형입자가속기다. 주로 하는 실험은 양성자-양성자 충돌실험이며, 1년에 몇 주 정도는 납이온 충돌실험을 진행한다. 전자의 실험을 통해서는 현재 우리가 알고있는 표준모형에 대한 재확인과 새로운 입자 탐사하고, 후자에서는 빅뱅이후 약 10^-6초 이후의 상태로 추정되는 쿼크-글루온 플라즈마 상태를 만들어 연구한다.
     페르미연구소에서 사용했던 Tevatron의 경우 양성자-반양성자 충돌실험을 통해  top 쿼크 발견하였다. LHC에서는 많은 데이터를 얻기 위해 high luminosity를 요구하게 되는데 이 목적에는 양성자-반양성자 실험 보다는 양성자-양성자 충돌실험이 더 유리하다.
      
  3.  이번 포스팅의 주제는 LHC에서 사용되는 자기장이다. 필요한 자기장은 크게 두가지로 나눌 수 있다.
    1. 원형 입자가속기이기 때문에 기본적으로 입자빔으로 하여금 원운동을 할 수 있게 하는 구심력을 주는 자기장이 필요하다. 
    2. 빔이 양전하를 띄는 입자들의 덩어리이기 때문에 전자기력에 의해 intensity가 떨어지게 된다. 또한 중력의 영향에 의해 빔들이 조금씩 아래로 내려오게 된다. 계속해서 놔두면 수십 마이크로초 이내에 빔 파이프를 벗어나게 된다. 따라서 빔을 빔파이프 중앙으로 집속시켜 줄 수 있는 자기장도 필요하다.
         
  4.  첫번째 용도의 자기장을 살펴보도록 하자. 몇 개의 사진을 보면 이해하기 쉬워진다.

      위의 사진은 LHC의 ring을 이루는 파이프다. 이러한 것이 약 27km를 원모양으로 이어져있다. 그 단면을 살펴보면 다음과 같다.

     가운데에 돼지코처럼 두개의 구멍이 뚫려있다. 이것이 빔파이프로 하나는 시계방향으로 운동하는 양성자빔, 또 다른 하나는 시계반대방향으로 운동하는 양성자빔을 위한 파이프다. 각 부분의 명칭을 표시해놓은 것들 중 위에서 5번째에 Superconducting coils이 있다. 이것이 입자빔으로 하여금 원운동을 할 수 있게 해주는 자기장을 생성한다. 이 코일을 자세히 살펴보도록 하자.

     전류가 위의 그림과 같이 흐르게 되면 빔파이프(가운데의 노란 원)에서의 자기장은 아래방향을 향하게 된다. 이 코일은 위와 같이 전류를 흘리게 위해

     이 그림에서 볼 수 있는 것 생겼다. 빔 파이프를 따라 스프링처럼 말려있는 모양이 아니라 회를 뜨는 느낌으로 빔파이프에 붙어있다. 전류가 흐르는 전선은 위처럼 칼국수 모양의 두꺼운 선이 아니라, 매우 많은 자잘한 superconduntor 전선에 전류가 흐르고있다. 이렇게 전류를 흘려줄 경우 자기장이 어떤 모양으로 만들어 지는지 시뮬레이션한 결과가 있다.

     빔 파이프내에 매우 균일한 자기장이 만들어지는 것을 알 수 있다. 왼쪽의 빔 파이프에서는 위쪽 방향의 자기장이, 오른쪽의 빔 파이프에서는 아래쪽 방향의 자기장이 만들어진다.
     빔파이프를 따라 양성자가 운동하면 로렌츠힘을 받아 원운동을 할 수 있게 된다. 이 superconducting coil을 따라 흐르는 전류는 입자빔의 에너지에 따라 변하면서 LHC의 ring을 따라서 운동할 수 있도록 해준다. 빔 파이프에서의 자기장 세기는 초기의 0.1 오더의 T에서 8T 이상까지 올라가게 된다.
      
  5.  두번째 용도의 자기장에 대해 살펴보자. 이 용도에는 여러개의 자석을 사용한다. 그 갯수에 따라 quadrupole, sextuple, octople .....이 있다.


     위의 그림처럼 양성자빔이 오른쪽에서 두개의 연속된 quadrupole magnet을 향해 입사하게 되면, 첫번째 magnet에서는 빔이 좌우로 집속되고, 두번째 magnet에서는 빔이 상하로 집속된다. 이미 첫번째 magnet에 의해 빔이 좌우로 집속되었기 때문에, 두번째 magnet에서 빔이 다시 좌우로 벌어질 염려는 하지 않아도 된다. 이러한 원리로 다양한 원인에 의해 떨어진 빔의 intensity를 다시 높여줄 수 있다.
     LHC에서는 이러한 quadrupole magnet과 다양한 multipole magnet들이 사용되는데 다음과 같은 배치를 가진다.

          
  6.  LHC에서는 전체 약 1300개 가량의 dipole magnet을 사용하고 있으며, 약 400개 가량의 quadrupole magnet을 사용하여 총 약 1700개 가량의 superconducting magnet을 사용하고 있다.

2014년 11월 24일 월요일

SU(3) group과 쿼크. Meson과 Baryon의 형성에 대해서.


  1. 20세기 초중반기 우주선(cosmic ray)에서 매우 많은 종류의 새로은 입자들이 발겼되었다. 정리계의 모범답안이었던 주기율표의 선례를 따라 입자들을 분류하고 정리하고자 하는 노력들이 계속되었다. 가장 기본적인 연구방법은 입자들간의 반응과 반응결과, 입자의 붕괴과정을 연구하는 것이다. 그 과정에서 lepton number conservation, flavor conservation 등의 보존법칙이 등장하게 된다. 질량과 에너지의 관점에서는 일어날 수 있는 반응임에도 일어나지 않는 반응들은 관찰하며 다양한 Quantum number들이 도입된 결과다. 그 중 strangeness 양자수는 그 이름으로 부터 알 수 있는 것 처럼 참 strange하다.
     이렇게 새로운 양자수들의 등장과 몇몇 보존법칙들을 통해 정리의 윤곽이 잡혀갈 때, 겔만은 쿼크모델을 제시한다. 이 모델은 양자역학에서 널리 쓰이던 스핀과 각운동량에 관한 SU(2) group을 확장한 것이다. 이 포스팅에서는 쿼크모델에 대해서 살펴보고자 한다.

     
  2.  양자역학을 수강한 대학생이라면 스핀에 대해 잘 알고있을 것이다. 가장 간단한 예로 전자 두개의 상태를 떠올려해보자. 전자는 +1/2 혹은 -1/2의 스핀을 가진다. 따라서 두개의 전자가 만들 수 있는 상태는 전체 스핀 양자수가 1 혹은 0 인 상태다. 전체 스핀 양자수가 1인 상태는 z방향 성분의 스핀에 따라 +1, 0, -1로 나뉘어 진다. 이 중 +1 상태의 경우는 당연히 두 전자가 모두 +1/2의 스핀을 가지는 상태다. 여기에 우리는 S- operator를 사용해 0, -1 상태가 두 개의 전자들로 어떻게 구성되는지 알 수 있다. S- operator 는 Sx - i Sy 로 정의된다. 이 operator를 스핀 스테이트에 작용시키면 전체 스핀 양자수는 그대로이면서 z방향 성분은 1씩 내리게 된다. 이러한 성질 때문에 step down operator라고도 부른다. S+ = Sx + i Sy는 같은 맥락으로 step up operator라 부른다. 양자역학을 제대로 배웠다면 전자의 갯수가 몇개가 되던지 이 step up & down operator를 사용해 Clebsch-Gordon coefficients들을 계산할 수 있을 것이다.
     Color charge에 대한 이론에서는 +1/2와 -1/2의 두 개뿐이었던 전자의 스핀 스테이트를 확장하여 3개로 가지고 간다. 따라서 기존의 Pauli matrix가 2*2 였던 것이 비해 3*3행렬이 도입된다. SU(3) group은 3*3 행렬들 중에서 Unitary하고 determinant가 1인 행렬들의 group이라는 뜻이다. 이 group에는 9개의 독립적인 행렬들이 존재할 수 있고, 우리가 사용할 용도에 따라 9개를 잡는 것은 좌표계의 기저를 정하는 것 만큼 자유롭지만 전통적인 방법을 따르도록 하자. 그것은 아래와 같다.


     의 eigen vector들과 함께,

    을 diagonalized 된 행렬로 고른다. 그 후에 스핀에서 사용했던 step up & down operator의 개념을 가지고 와서 R에서 G를 오가는 operator를 람다 1, 2를 사용해
    로 생각할 수 있다. R과 B를 오가는 것을 람다 4,5 의 operator로, G와 B를 오가는 것을 람다 6, 7의 operator로 생각하면 간단하게 익히 알려진 나머지 Gell-Mann matrix들을 계산할 수 있다. 이것은 가장 간단한 SU(3) group의 예라고 할 수 있다.
    (http://en.wikipedia.org/wiki/Gell-Mann_matrices)
       
  3.  위의 Color에 관한 이야기에서 사용한 것을 이제 flavor로 가지고 가도록 하자. 흔히 말하는 isospin과 strangness를 결합하는 내용이다. isospin은 양성자와 중성자가 전하에 의한 차이 말고는 질량이나 스핀에서 크게 차이를 가지지 않기 때문에 같은 입자의 다른 스테이트라고 생각하는 아이디어에서 나온 것이다. 둘 모두 I = 1/2이고 양성자는 I3 = 1/2, 중성자는 I3 = -1/2라고 생각하면 전자의 스핀에 대한 내용과 똑같다. 쿼크모델에서는 u 쿼크가 I3 = 1/2, d 쿼크가 I3 = -1/2라고 생각하고,  s 쿼크은 I = 0이다. 대신 s 쿼크는 strangeness를 가진다. 그 값은 -1이다. 따라서 I3 를 x 축으로 하고, S(strangeness)를 y축으로 잡아 좌표평면 위에 각 quark들의 위치를 나타낼 수 있다. 그런데 이렇게 하면 세개의 쿼크가 만드는 삼각형의 중심이 원점에 있지 않으므로 원점에 놓기위해 hypercharge라는 개념을 도입한다. Y = B + S이고 여기서 B는 baryon number 로 각각의 쿼크는 1/3의 값을 가진다. 이제 I3와 Y의 평면에서 세개의 쿼크가 만드는 삼각형의 중심이 원점에 있음을 확인할 수 있다. anti-quark들이 만드는 삼각형은 ordinary-quark들이 만든 삼각형을 180도 회전한 모양이 된다.
       
  4. Meson 의 형성.
     Meson 이라는 이름은 중간정도의 무게라는 뜻이다. 입자들이 발견되던 당시 가벼운 입자인 전자등을 그 뜻을 담아 Lepton이라고 이름붙이고, 양성자와 중성자와 같은 무거운 입자들 역시 그 뜻음 담아 Baryon이라 불렀다. 유카와의 이론이 발표된 이후 실제로 그 입자가 발견되었을 때 그 무게는 lepton과 baryon의 중간정도였기 때문에 Meson이라고 불렀다. 후에 Meson은 쿼크와 안티쿼크의 bound state라는 것이 밝혀졌고, 바리온은 3개의 quark의 bound state라는 것이 밝혀졌다. 질량도 상당히 다양하였기 때문에 meson과 baryon을 더이상 질량으로 구분하지 않고 위의 의미로 구분한다.
     3번의 내용에서 이야기한 I3와 Y 평면위에 쿼크들이 어떻게 위치하는지 먼저 확인하고 다음으로 넘어가도록 하자.

     Meson은 쿼크한개와 안티쿼크 한개의 결합으로 이루어지므로 만들 수 있는 경우의 수를 생각해보면 된다. 겔만은 그 과정을 직관적으로 이해할 수 있는 방법을 제시하였다. 쿼크로 이루어진 삼각형의 각 꼭지점에 안티쿼크로 이루어진 삼각형의 중심이 오도록 하는 것이다. 그림을 보면 알 수 있겠지만 육각형이 만들어 진다. 육각형의 꼭지점마다 Meson들이 위치하게 된다. 그 Meson의 구성은 안티쿼크 삼각형의 중심에 있는 쿼크와 안티쿼크 삼각형 꼭지점의 쿼크가 합쳐진 것이다. 이 기하학적이고 유용한 정리방법은 Y와 I3가 additative quantum number이기 때문에 좌표평면 위의 벡터합의 개념을 가져와 사용할 수 있는 것이다. 아래의 그림을 통해 이해할 수 있다.


     이제 문제는 가운데 부분이다. I3 = Y = 0인 이 메존들은 uubar, ddbar, ssbar(ubar, dbar등은 u나 d 위에 bar가 있는 것을 의미하는 것으로 안티파티클을 의미한다)의 선형결합으로 이루어진다. 총 세가지의 종류인데, 선형결합이 어떻게 이루어지는지 알아보는 것은 약간의 생각을 필요로 한다. I = Y = 0 인 것은 당연히 (uubar + ddbar + ssbar) 의 선형결합으로 이루어진 메존이다. 전자 두개의 스테이트를 기술할 때를 기억해보면 이해할 수 있을 것이다. 그 때 S = 0 & S3 = 0인 스테이트는 upup + downdown 스테이트다. 그리고 이것은 singlet이다. 따라서 다른 8개의 메존들과 구분하여 생각할 수 있다. 3*3 = 8 + 1 이 되는 것이다. 나머지 두개의 메존은 한번 더 전자 두개의 스테이트를 떠올리며 구할 수 있다. S = 1 & S3 = 0 인 스테이트는 upup - downdown 스테이트다. 따라서 메존역시 uubar - ddbar로 이루어진 스테이트가 있을 것이다. (쿼크이름이 왜 up quark와 down quark인지 이해할 수 이해할 수 있다) 마지막은 나머지 2개의 메존과 orthogonal하다는 조건을 통해 얻을 수 있다.
     요약하면 다음과 같다.

      
  5. Baryon의 형성
     바리온은 메존과 같은 방식으로 이해할 수 있다. 세개의 쿼크 삼각형이 어떻게 합쳐질지 생각해보면 된다. 여기서부터는 퍼즐을 푸는 것처럼 맞추면 된다. 결과만 올리면 다음과 같다.

물질을 이루는 입자들의 발견에 대해서

  1.  주변을 관찰할 때 품을 수 있는 질문은 다양하다. 무엇으로 이루어져 있는가? 어떻게 이루어져 있는가? 이것은 진짜인가 가짜인가? 그리피스는 이것을 연극에 비유한다. 등장인물들은 누가 있는가? 캐릭터들 사이의 관계와 갈등은 무엇인가? 시나리오는 픽션인가 아니면 실화에 기초한 것인가?
     화학이나 입자물리학에 대한 개론서들은 고대 그리스 철학자들에 대한 이야기로 시작한다. 4원소설은 빠질 수 없는 이야깃거리다. 비록 틀린 가설이지만 항상 등장하는 이유는 '시작'이라는 위대한 업적이기 때문일 것이다. 우리가 배우고 있는 과학은 틀린 가설과 실패들이 쌓아 올린 돌무더기 탑과 같다. 틀리든 맞든 돌을 놓은 이가 있어야 정답에 다가가는 이도 있는 법이다. 
     최신을 달리는 정답은 표준모형(standard model)이다. 여전히 완벽하지 않아서 부족한 부분들이 여러군데에서 나타났기 때문에 보수과정중에 있지만, 현재까지는 정답에 가장 근접했다고 할 수 있다. 이 모형에서는 그리 많지 않은 인물들이 등장한다. 우주라는 큰 스케일을 설명하는 이론치고는 상당히 적은 수라는 것이 신기하게 다가온다. 이 포스팅은 표준모형이라는 것에 대해 들어가기에 앞서 기본적인 입자들의 발견에 대한 이야기를 정리해보고자 한다.
     
  2. 전자의 발견( + 양성자와 중성자)
     전자의 발견에 대한 이야기 역시 고대부터 시작할 수 있지만, J.J.톰슨부터 시작해 보도록 하자. 이 시기는 이미 멘델레예프의 주기율표가 등장했다. 주기율표의 족과 주기에 따라 원소들의 유사성이 있다는 사실은 많은 이들로 하여금 세부구조의 가능성을 생각토록 했다. 쪼갤 수 없는 원자가 이토록 규칙적인 성질을 보인다는 것은 상식적으로 이해하기 힘들다. 따라서 원자내부의 구조를 규명하기 위한 연구가 진행되는 것은 주기율표가 가져다주는 자연스러운 과정이다.
     J.J.톰슨은 이러한 시기에 음극선을 발견하게 된다. 금속에 열을 가하면 의문의 선(ray)이 방출되는데, 자기장에 의해 휘는 방향을 보니 음의 전하를 가지고 있다. 그 휘는 정도를 이용해 비전하(e/m)을 측정해보니 여타 다른 이온들과 비교할 때 상당히 컸다. 음의 전하를 가진다는 것은 놀라운 사실이 아니지만, 비전하값은 충격적인 결과다. 너무크다. 이온들에 대한 측정결과에 비해 수천에서 수만배 크다. J.J.톰슨은 이 음극선이 특별한 입자라는 사실을 깨달았을 것이다. 그 이후 실험을 통해
    다른 종류의 금속들에게서 음극선을 방출시킨 후 비전하를 측정한 결과 그 값이 오차범위 내에서 동일하다는 사실을 발견한다. 이 결과는 전자가 원자의 구성요소라는 것을 지지해 주는 것이다. 바꿔 말하면 모든 원자에 들어가 있는 입자라는 것이다. 원자는 매우 작기 때문에 현미경으로 들여다 보면서 정말 그 안에 정말 전자가 들어있는지 확인해 볼 수 없다. 이 정도 크기의 세계를 연구할 때는 간접적인 증거를 얻는 것이 유일한 방법이다. 따라서 여기까지 실험이 이루어졌을 때 사람들의 원자에 대한 이미지는 푸딩이었다. 양의 전하를 가진 푸딩 안에  음의 전하를 가진 작고 질량이 작은 전자가 박혀있는 모습이 그 당시에는 가장 최신을 달리는 멋진 정답이었던 것이다.
     하지만 러더포드의 산란실험의 결과에 의해 사람들의 원자에 대한 이미지는 바뀌게 된다. 알파입자를 튕겨내는 것을 보아 원자 내의 양전하들은 작은 점에 집중되어 있는 것이 분명하다. 이 때 부터 양전하를 가지는 원자핵이 있고, 그 주변을 전자가 공전하는 궤도모형이 채택된다.
     양성자의 발견 이후 보어는 전자의 궤도 각운동량이 양자화되어 있다는 가설을 통해 수소 스펙트럼 에너지를 계산하게 되고, 이는 실험결과와 일치했다. 이 과정에서는 양성자와 전자가 동일한 전하값를 가지며, 그 전하값은 밀리컨이 측정한 기본전하 값이라는 가정이 들어가게 된다. 이를 통해 양성자와 전자의 질량을 계산할 수 있다. 스펙트럼 에너지를 동일하게 계산한 단계까지 이르렀을 때 사람들은 전자가 원소를 이루는 기본 입자중의 하나라고 생각할 수 있게 되었다. 이는 양성자도 마찬가지다. 그 전까지는 주장을 뒷받침할 근거가 부족한 느낌이 많았지만, 강력한 서포터가 생긴 셈이다. 이 후 양자역학에서도 전자의 질량과 전하값이 올바르게 예상되었음이 증명되었고, 지금까지도 전자를 원자의 구성요소라고 생각하고 있다. 양자역학에서 도입한 전자구름 모형은 반도체를 연구하는 과정에서 매우 높은 정확성을 보여주었기 때문에 맞는 이론이라고 생각되고 있다. (특수상대론을 적용할 필요가 없는 에너지에서는)
     이 과정은 양성자에게도 적용된다. 전자와 양성자는 서로의 발견과 이해에 빠질 수 없는 부분이다. 결과를 아는 입장에서는 당연하다. 둘이서 원자를 이루고 있기 때문이다.
     후에 원자의 무게가 원자번호 * 양성자질량 을 곱한 것 보다 약 2배정도 무겁다는 사실을 발견하게 된다. 이것은 중성자의 발견으로 가는 열쇠가 된다. 원자의 질량만 늘려주면서도 기존의 이론을 헤치지 않기 위해서는 중성이어야만 한다. 중성이 되면 원자핵 주변을 움직일 때 전자기력으로 구속할 수 없으므로 원자핵의 구성요소여만 한다. 채드윅이 중성의 선(ray)를 발견하면서 물질 속에 중성인 입자가 들어있다는 것을 실험적으로 밝혔으므로 위와 같이 가정하는 것이 자연스럽다. 지금까지도 맞는 가정이라고 여겨지고 있다.
     
  3. Who ordered that?
     여기까지만 하고 끝난다면 헤피엔딩일 수도 있다. 원자를 이루는 구성요소들이 무엇인지를 알아내었고, 원자번호 = 양성자의 갯수이고, 에너지준위와 오비탈마다 전자가 들어갈 수 있는 상태의 갯수가 다르기 때문에 주기율표상의 규칙성이 나타난다는 사실을 밝혀냈기 때문이다. 하지만 그 당시 사람들은 원자핵을 도입할 때 부터 문제가 있다는 것을 알고 있었다. 어떻게 양성자들이 서로를 밀어내지 않고 그리 가까운 거리에 뭉쳐있을 수 있는가? 전자기력은 거리의 제곱에 반비례하므로 이것은 불가능한 일이다.
     유카와는 양성자들을 붙잡아 두는 새로운 힘이 있을 것이라 생각했고, 그 힘이 미치는 영역이 핵의 크기정도 될것이라는 가정을 통해 그 힘을 매개하는 새로운 입자를 예상했다. 원자의 새로운 구성요소가 필요해진 것이다. 후에 우주선(cosmic ray) 검출실험을 통해 유카와가 예측한 것과 동일한 특징을  가지는 입자가 발견되면서 그의 이론은 힘을 얻는다. 그 후 계속된 우주선 검출실험에서 물리학계는 혼란에 빠지게 된다. 너무나도 많은 새로운 입자들이 발견되었기 때문이다. 특별히 전자와 똑같은 성질을 가지고 질량만 다른 뮤온의 발견에 대해 물리학자 Rabi는 "Who ordered that?"이라는 명언을 남긴다. 도대체 뮤온은 무슨 역할을 하기 위해서 존재하는지 이해할 수 없다는 것이다. 원자를 이루고 우주를 구성하는 데에는 쓸모가 없다고 생각하기 때문이었을 것이다.
     이렇게 수 십가지나 되는 입자들이 새롭게 발견되면서 그것들을 정리하기 위한 노력이 시작되었다.  입자들의 붕괴와 반응과정을 살펴보면서 가능해 보이지만 실제로는 일어나지 않는 반응과 실제로 일어나는 반응을 정리하였고, 입자들을 분류할 수 있었다. 또한 붕괴가 일어나는 시간의 스케일이 크게 두가지로 나뉜다는 것이 밝혀졌다. 10의 -23승정도와 10의 -10승 정도로 두개로 나누어 졌는데(이것은 사실 매우 큰 차이다) 이 두가지를 다른 힘에 의한 반응이라고 생각하였다. 전자가 강력, 후자가 약력이라고 알려져있다. 겔만은 이 과정에서 쿼크모델을 제시하게 된다. 그 모델에 따라 주기율표 저리가라 할 정도로 새롭게 발견된 입자들을 잘 정리했고, 질량과 스핀, parity등이 발견된 입자들과 잘 일치했다. 쿼크모델은 당시 바리온과 메존으로 분류되었던 입자들을 아름답도록 정리할 수 있었고, 그 정리만으로도 옳은 이론이라는 주장이 힘을 얻었다.
     후에 입자가속기에서 이루어진 충돌실험을 통해 쿼크가 실제로 존재한다는 것이 간접적으로 확인되었고, 그 질량도 측정할 수 있었다. 또한 양자역학을 특수상대론적인 영역까지 확대한 양자장론에서 예측한 힘을 매개하는 입자들(W+-, Z, gluon)도 발견되었다. 1990년대에 이르러서는 top쿼크까지 발견되기에 이른다.
     비로소 우주를 구성하는 입자들을 Gauge boson( W+-, Z, gamma, gluon), Quark, Lepton 세 가지의 종류로 나눌 수 있게 된 것이다. 이 입자들의 종류와 그 입자들의 상호작용에 대한 이론을 표준모형(Standard Model)이라고 부른다.

     
  4. 물질을 이루는 입자들을 발견하는 과정에서는 이론과 실험이 계속해서 상호작용하게 된다. 가정과 확인의 끊임없는 연속이다. 이는 현재의 입자물리학 실험에서도 역시 이루어지고 있다. 2013년 노벨물리학상이 힉스입자 발견으로 인해 힉스와 프랑코스에게 돌아갔다. 지금은 표준모형에서 설명하지 못하는 것들을 설명할 수 있는 새로운 입자들을 발견하기 위해 노력중이다. 어떤 새로운 입자가 발견될지 상당히 기대된다.

Twiki(트위키) 6.0.0 우분투(Linux)에 설치 (/var/www/ 디렉토리에 설치)

1. 터미널에서 su 명령어를 치고 엔터. password를 입력하면 우분투 루트계정으로 변경.
    터미널에 root@ubuntu:~#  가 뜬다.

2. 트위키 설치전에 필요한 프로그램들을 설치한다.
터미널에 입력
apt-get install apache2 libgdal-perl libcgi-session-perl libhtml-tree-perl liberror-perl libfreezethaw-perl libgd2-xpm rcs
그러면 자동으로 필요한 프로그램들을 설치해준다.

3. 트위키 압축파일을 받는다.
1)   http://twiki.org/cgi-bin/view/Codev/DownloadTWiki
에서 여러가지 체크하고 하는 박스 아래에 있은 I'd rather skip this form 을 클릭한 후
tgz를 클릭해서 다운로드.

2)   다운로드 한 파일을 터미널에서 cp(파일복사) 명령어나 mv(파일이동) 명령어를 사용하여
/var/www/  
디렉토리로 옮긴다. 그리고 압축을 풀어줌.
tar -zxvf TWiki-6.0.0.tgz
을 터미널에 입력하면 압축이 풀림.

4. 인터넷으로 접속할 수 있도록 twiki폴더의 보안설정 변경
chown -R www-data:www-data /var/www/twiki
을 터미널에 입력

5.LocalLib.cfg 파일 복사 & 변경
cp /var/www/twiki/bin/LocalLib.cfg.txt /var/www/twiki/bin/LocalLib.cfg
[ cp (복사하고 싶은 파일 이름) (복사 완료된 파일 이름)] 으로 된 명령어로 결과적으로 파일 이름에서 txt 확장자를 떼네는 명령어.

6. Configuration 을 만들자 (일종의 설정같은 것)
우리는 twiki 폴더를 /var/www/에 설치했으므로 따로 손 댈 것은 없다.  
(다른 폴더에 설치하고 싶으면 /var/www/twiki 를 자신이 설치한 폴더 디렉토리로 바꾸면 된다. root계정 기준으로 디렉토리를 설정하자. 예를들어 우분투에서 자신이 사용하는 계정 kim 에 있는 폴더 httpd에 설치하고 있다면, /var/www/twiki 대신 /home/kim/httpd/twiki 로 맨 첫번째 설정을 변경하면 된다.

살짝 아래에 보면 Update config file 이라는 버튼이 있다. 클릭.
그러면 더 아래쪽 박스에 configuration의 내용이 출력된다.
이 내용을 vi나 emacs등으로  
/etc/apache2/conf.d/twiki.conf 에 들어가 기존의 내용들을 지우고, 방금 만든 박스안에 있는 내용들을 빠짐없이 복사 붙여넣기 하자.  

그리고, twiki 페이지의 설정 변경을 할 수 있는 권한을 특정 ip에 부여해야 한다. 그 내용을 twiki.conf 에 추가해주어야 되는데,

<FilesMatch "^configure.*">
SetHandler cgi-script
Order Deny,Allow
Deny from all
Allow from 127.0.0.1,192.168.20.8,192.168.20.11
</FilesMatch>

이 내용을 twiki.conf 맨 아래에 추가해주면 된다. 여기서 127.0.0.1 은 그냥 두고,
168.20.8.192 등을 자신이 서버로 쓰는 머신(컴퓨터)의 ip로 바꾸면 된다.

7. 아파치 재 실행( 변경된 내용들을 적용)
/etc/init.d/apache2 reload
을 터미널에 입력

8. 아까전에 txt확장자를 떼네었던
/var/www/twiki/bin/LocalLib.cfg 파일을 열어 (vi나 emacs 등으로)

$twikiLibPath = "/var/www/twiki/lib"; 로 변경해준다. (찾아보면 $twikiLibPath가 적힌 라인이 있음)

이제 인터넷 창에 들어가서 주소창에 localhost를 치거나 자신의 ip주소를 치면 twiki 페이지가 뜰 것이다.

9. 주소창에 ip주소나 localhost를 친 후, twiki폴더에 들어가 configuration 폴더에 들어가보자.
그럼 password를 설정하라고 한다. 설정 후 들어가면 twiki 페이지의 여러가지 설정들을 변경할 수 있다.



9. 에러 대처법
1) apache를 reload하는데 "Could not reliably determine the server's fully qualified domain name, using ... for ServerName" 이라는 메시지가 뜰 경우

/etc/apache2/httpd.conf를 vi나 emacs로 실행하여(아무내용도 없을 것이다) 
ServerName localhost 를 입력하여 준 후 저장하고 종료.

2) localhost/twiki/configuration을 인터넷 브라우저로 들어갔는데, LocalLib.cfg 를 찾을 수 없다고 하는 경우.
 - LocalLib.cfg 파일을 열어서 오타는 없는지, 디렉토리가 /var/www/로 잘 설정되어 있는지 확인
 - /etc/apache2/conf.d에 들어가 twiki_httpd_conf 파일을 열고 디렉토리들이 /var/www/로 잘 설정되어 있는지 확인.
- 여러 configure 파일들에 들어가 디렉토리들이 /var/www로 잘 설정되어 있는지 확인

혹은 자신이 설치한 폴더로 잘 설정되어 있는지 확인. 



alias 사용법

alias는 terminal 상에서 자주 사용하는 긴 명령어들을 짧은 명령어로 대체할 수 있도록 해줍니다.
홈디렉토리로 갑시다.
$ cd
그 이후 bashrc파일을 엽니다.
$  emacs -nw .bashrc
제 .bashrc에는
##settings                                                                                                            

alias setupcms='export VO_CMS_SW_DIR=/cvmfs/cms.cern.ch; 
source $VO_CMS_SW_DIR/cmsset_default.sh'

alias cmssw5='export SCRAM_ARCH=slc5_amd64_gcc462'
alias cmssw6='export SCRAM_ARCH=slc5_amd64_gcc472'
alias cmssw7='export SCRAM_ARCH=slc5_amd64_gcc481'
alias slc6cmssw7='export SCRAM_ARCH=slc6_amd64_gcc481'
alias cmssw730='export SCRAM_ARCH=slc6_amd64_gcc491'
등의 내용이 있습니다. (위의 내용은 .bashrc에 있는 내용들 중 일부 입니다.)
가장 마지막 라인에 커서를 옮기신 다음
alias (사용할 단축 명령어) = '(그 명령어가 실행할 명령)'
순으로 입력해 주시면 됩니다. 위의 제 bashrc의 내용을 참고하시길 바랍니다.
setupcms를 보시면 아시겠지만, 여러개의 명령은 세미콜론(;)으로 구분해 주면 됩니다.

만약 LXPLUS를 사용하시면서 work directory 로 가는 과정이 귀찮다면

alias work='cd /afc/cern.ch/work/u/user/'
(user는 자신의 username, u는 username의 첫글자)
를 bashrc에 입력하시면 됩니다.
변경된 bashrc의 내용은
$ source .bashrc
로 적용되고, 이 후로는 로그인할 때 마다 자동으로 적용됩니다.
$ work
를 치시면 working directory 로 이동하는 것을 확인하실 수 있습니다.


LXPLUS에서 Crab job 돌리는 법

1.이 포스트는 CMS에서 제공하는 트위키 페이지인

2.Crab 이란?
  CMS는 data를 처리하기 위해 세계 전역에 computing server들을 가지고 있습니다. 이 서버들은 CMS에 있는 tier1 부터 시작해서 tier2, tier3 로 등급이 매겨집니다. Crab은 이 서버들의 자원을 사용해 데이터 분석을 할 수 있도록 해주는 프로그램입니다. 이 포스트에서는 crab 2 에 대한 사용법을 적어보고자 합니다. 

3.미리 필요한 단계들 - 위의 튜토리얼 링크를 들어가시면 아래의 단계에 필요한 내용들이 있습니다.
- LXPLUS에 사용권한 및 work space를 배정받습니다.
- CMS에서 Grid certification을 받습니다. 
- KCMS의 멤버시라면 국내에 있는 tier2 나 tier3에 계정을 받으시길 바랍니다. 그래야 crab을 돌린 결과파일을 빠르게 한국내의 자신의 서버로 가져올 수 있습니다.
(경북대, 서울시립대, KISTI 등에 있습니다. 구글링하시면 정보를 찾아보실 수 있습니다.)

4. Let's start!
1) lxplus에 접속합니다.
$ ssh -Y user@lxplus.cern.ch
2) work space 로 갑니다.
$ cd /afs/cern.ch/work/u/user
여기서 u는 user의 맨 첫글자를 쓰면 됩니다. user는 자신의 username 이구요. work space를 배정받지 않았다면 이 디렉토리가 없습니다.
3) test 를 위한 directory를 하나 만듭시다. 원하는데로 만드시면 됩니다.
$ mkdir TEST
4) 사용하려 하는 버전의 CMSSW를 불러옵니다.
$ cd TEST
$ cmsrel CMSSW_X_X_X
tutorial 에서는 5_3_11을 불러옵니다.
5) cmsenv 를 합시다.
$ cd CMSSW_X_X_X/src/
$ cmsenv
여기서 cmsenv는 alias입니다. 자세한 내용은 alias 사용법에 대한 포스트를 참고하시길 바랍니다.
6) python script를 만듭시다.
tutorial 을 따라가려면
$ emacs -nw tutorial.py
를 한 다음 
import FWCore.ParameterSet.Config as cms
process = cms.Process('Slurp')

process.source = cms.Source("PoolSource", fileNames = cms.untracked.vstring())
process.maxEvents = cms.untracked.PSet( input       = cms.untracked.int32(10) )
process.options   = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) )

process.output = cms.OutputModule("PoolOutputModule",
    outputCommands = cms.untracked.vstring("drop *", "keep recoTracks_*_*_*"),
    fileName = cms.untracked.string('outfile.root'),
)
process.out_step = cms.EndPath(process.output)
의 내용을 복붙하면 됩니다.
(복붙 후 저장하고 나오시려면 control + x + s 한 후, control + x+ c 하시면 됩니다. 자세한 emacs 의 사용법은 관련 포스트를 참고하시기 바랍니다.)
혹은, 자신이 crab을 이용해 돌리고 싶은 python script를 현재의 CMSSW_X_X_X/src폴더로 가져오시면 됩니다.
7) crab.sh를 source합시다.
$ source /afs/cern.ch/cms/ccs/wm/scripts/Crab/crab.sh
자신이 사용하고 있는 쉘의 종류에 따라서 마지막의 sh를 csh나 sh 둘 중 하나로 하시면 됩니다.
8) crab script를 만듭시다.
tutorial 에서 제공하는 script를 사용하려면
$ emacs -nw crab .cfg
를 한 다음
[CMSSW]
total_number_of_events  = 10
number_of_jobs          = 5
pset                    = tutorial.py
datasetpath             =  /RelValZMM/CMSSW_5_3_6-START53_V14-v2/GEN-SIM-RECO

output_file              = outfile.root

[USER]
return_data             = 0
copy_data               = 1
storage_element        = T2_IT_Legnaro
user_remote_dir         = TutGridSchool

[CRAB]
scheduler = remoteGlidein
jobtype                 = cmssw
의 내용을 복붙하시면 됩니다. 
여기서 수정을 가해야 할 부분들이 있습니다.
-total_number_of_events 는 원하는 총 이벤트 갯수를 입력하시면 됩니다.
-number_of_jobs는 총 이벤트를 몇개의 job으로 나눠서 제출할지 적으면 됩니다. 예를 들어서 total_number_of_events가 2500000이고 number_of_jobs가 500이라면 자동적으로 한 job에 5000개씩의 이벤트를 돌리게 되고 결과 파일 500개가 나옵니다. 각 파일당 5000개의 이벤트를 가지고 있구요.
- pset 에는 자신이 돌리고 싶은 python script를 입력하시면 됩니다.
- datasetpath는 자신이 사용하는 datapath를 넣으시면 되구요, dataset을 사용하지 않는 MC generation과 같은 경우는 datasetpath  =  None을 입력하시면 됩니다.
-output_file 에는 python 스크립트에 입력한 동일한 이름의 아웃풋 파일 이름이 들어가야 합니다. 잡이 여러개면 outfile뒤에 랜덤한 이름이 붙어 number_of_jobs 의 수만큼의 파일들이 출력됩니다.
-storage_element 는 자신이 결과를 받고자 하는 곳의 정보를 입력합니다. 만약 서울시립대의 tier3에 데이터를 받고 싶다면, T3_KR_UOS를 입력하면 됩니다. 당연히 해당하는 server에 계정을 가지고 있어야 겠지요.
추가적인 옵션들은 튜토리얼 페이지를 참고하시기 바랍니다.
9) crab을 돌려봅시다.
$ crab -create
을 하면 여러줄의 메세지들이 터미널에 뜹니다. 에러가 났는지, 아니면 create 명령이 성공적으로 이루어졌는지 알려줍니다. 에러가 났다면 에러메세지를 확인하고 수정을 가하시길 바랍니다.
성공적으로 create가 되었다면 
$ crab -submit
으로 job을 submit 합니다. 여러 메세지가 뜬 후, 몇 개의 job이 submit 되었는지가 뜹니다.
이 job의 정보를 확인하기 위해서는
$ crab -status
를 치면 됩니다. 그럼 각 job들에 대한 정보와 특별히 task monitering 을 위한 url을 알려줍니다. 그 url을 복붙해서 브라우저에 주소를 쳐서 들어가면 아주 쉽게 job의 상황을 확인할 수 있습니다.

10) fail에 대처하기
job을 돌리다보면 fail이 뜨는 경우가 있습니다. 이 때는 먼저 task monitering url 에서 fail 한 집들의 Appl Exit Code를 확인해 보시길 바랍니다.
Succeeded한 job들은 그 코드가 0이고, fail한 job들은 다양한 코드들을 보여줍니다.
를 참고하시기 바랍니다. 
해결방안을 찾을 수 있는 부분들은 수정후 다시 submit 해야 하고 ( -resubmit은 아래를 참고)
못찾겠다면 Succeeded할 때 까지 resubmit 하시길 바랍니다.
몇몇 job은 성공하고 몇몇 job이 실패하는 경우라면 resubmit이 소용있지만, 
submit한 모든 job들이 fail 한다면 python script나 cfg script 혹은 storage element에 문제가 있는 것이므로 문제를 수정 후 다시 submit 하시길 바랍니다.

11) -resubmit에 앞서
한 가지 요령이겠지만, 많은 job 들을 돌리고자 한다면 5개 정도의 job을 먼저 돌려보고 fail하는지 아닌지 먼저 확인해 보고 그 이후에 많은 job들을 돌리시길 바랍니다.
12) -resubmit 하는 법
job들이 모두 돌아간 후, 혹은 돌아가는 도중에 fail한 job들을 resubmit 하는 방법입니다.
먼저 status를 확인합시다.
$ crab -status
이것을 치면 터미널에 exit한 job들의 정보가 뜹니다. exit코드 별로 해당하는 job들의 목록이 정리되어 뜹니다.
그 정보들을 가지고 먼저
$ crab -get 1,11,15,20
과 같은 명령으로 결과를 가져옵니다. 여기에 1,11,15,20은 fail한 job들을 입력하시면 됩니다. crab -status 명령어에 의해 띄어진 메세지들에 있으니 복붙해서 넣으시면 됩니다.
그럼 어디에 job들을 가져왔는지 알려줍니다. (fail한 잡들의 error가 의심된다면 알려주는 디렉토리의 .stdout 확장자의 내용을 읽어보시길 바랍니다.)
 마지막으로 
$ crab -resubmit 1,11,15,20
으로 resubmit 해 줍니다. 그러면 1,11,15,20의 자리에 넣은 job들을 resubmit 하게 됩니다.
모든 job을 성공할 때 까지 이 과정을 반복하시면 됩니다.