liminfo

CERN ROOT Reference

ROOT 프레임워크 클래스/히스토그램/피팅 레퍼런스

26개 결과

CERN ROOT Reference 소개

CERN ROOT 레퍼런스는 고에너지 물리학에서 널리 사용되는 ROOT 데이터 분석 프레임워크의 핵심 클래스 27개를 검색할 수 있는 치트시트입니다. 히스토그램(TH1F, TH2F, TH1D, TProfile, THStack), TTree(TTree, Draw, TChain, TTreeReader, SetBranchAddress), 피팅(TF1, Fit, RooFit, TMinuit), 그래프/시각화(TCanvas, TGraph, TGraphErrors, TLegend, gStyle), 파일 I/O(TFile, TFile::Open, hadd), 물리 분석(TLorentzVector, RDataFrame, TCut, TMath) 6개 카테고리로 정리했습니다.

각 항목에 클래스 용도 설명과 생성자 문법, 메서드 호출, 일반적 사용 패턴을 보여주는 C++ 코드 예제가 포함되어 있습니다. 불변 질량 분포 그리기, 가우시안 피팅, RDataFrame으로 대규모 이벤트 처리까지 필요한 코드 패턴을 바로 찾을 수 있습니다.

CERN 및 전 세계 연구소의 입자물리 대학원생, 박사후연구원, 연구자를 위해 제작했습니다. 브라우저에서 바로 실행되며 한국어/영어, 다크 모드, 모바일 반응형 디자인을 지원합니다.

주요 기능

  • 히스토그램·TTree·피팅·그래프·파일 I/O·물리 분석 6개 카테고리 27개 ROOT 클래스/명령어 수록
  • 히스토그램 유형: TH1F(1D float), TH2F(2D), TH1D(double 정밀도), TProfile(빈별 평균), THStack(겹쳐 그리기)
  • TTree 작업 흐름: 브랜치 생성, TTree::Draw 빠른 시각화, TChain 멀티파일, TTreeReader 타입 안전 읽기, SetBranchAddress 클래식 방식
  • 피팅: TF1 내장 함수(gaus, pol2)부터 RooFit 확장 likelihood 피팅, TMinuit 커스텀 최소화까지
  • 그래프: TCanvas(멀티 패드, PDF 저장), TGraph/TGraphErrors(에러바 산점도), TLegend, gStyle 설정
  • 파일 I/O: TFile 열기/생성/저장, xrootd/HTTP 프로토콜, hadd 파일 병합
  • 물리 분석: TLorentzVector 4-벡터 연산, RDataFrame 선언형 분석, TCut 이벤트 선택, TMath 수학 함수
  • 모든 코드 예제는 ROOT 6 규약에 맞는 올바른 C++ 문법과 생성자 인자, 메서드 시그니처 사용

자주 묻는 질문

어떤 ROOT 클래스를 다루나요?

6개 카테고리 27개 항목입니다. 히스토그램(TH1F, TH2F, TH1D, TProfile, THStack), TTree(TTree, TTree::Draw, TChain, TTreeReader, SetBranchAddress), 피팅(TF1, Fit, RooFit, TMinuit), 그래프(TCanvas, TGraph, TGraphErrors, TLegend, gStyle), 파일 I/O(TFile, TFile::Open, hadd), 물리 분석(TLorentzVector, RDataFrame, TCut, TMath). 각 항목에 C++ 코드 예제가 포함됩니다.

ROOT에서 히스토그램을 만들고 채우는 방법은?

TH1F *h = new TH1F("name", "Title;X;Y", nbins, xmin, xmax)로 생성, h->Fill(value)로 데이터 채우기, h->Draw()로 그립니다. 2D는 TH2F에 두 축 범위를 지정하고 h->Fill(x, y)를 사용합니다. "COLZ" 옵션으로 2D 컬러 플롯을 그릴 수 있습니다.

TTreeReader와 SetBranchAddress의 차이점은?

TTreeReader는 현대적 타입 안전 인터페이스로 TTreeReaderValue<Type>을 선언하고 reader.Next()로 순회합니다. SetBranchAddress는 포인터를 수동 바인딩하고 GetEntry(i)로 읽는 클래식 방식입니다. 새 코드에는 컴파일 시 타입 불일치를 잡아주는 TTreeReader를 권장합니다.

히스토그램에 가우시안을 피팅하는 방법은?

가장 간단한 방법은 h->Fit("gaus")입니다. 세밀한 제어가 필요하면 TF1 *f = new TF1("f", "gaus", xmin, xmax)로 함수를 만들고 f->SetParameters(amplitude, mean, sigma) 후 h->Fit(f, "R")을 호출합니다. 고급 피팅은 RooFit의 RooGaussian이나 TMinuit을 사용합니다.

RDataFrame은 무엇이고 언제 사용하나요?

RDataFrame은 ROOT의 현대적 선언형 분석 프레임워크입니다. 명시적 이벤트 루프 대신 Filter(), Define(), Histo1D()를 체이닝합니다. 자동으로 멀티코어 병렬 처리되며 ROOT 6 신규 분석에 권장됩니다. 예: df.Filter("pt > 25").Histo1D(...)

TLorentzVector로 불변 질량을 어떻게 계산하나요?

TLorentzVector 두 개를 SetPtEtaPhiM(pt, eta, phi, mass)으로 설정하고, p1 + p2로 더한 뒤 sum.M()으로 불변 질량을 구합니다. Z 보손 -> 디뮤온 재구성처럼 입자 붕괴를 분석하는 표준 방법입니다(뮤온 질량 0.105 GeV 사용).

ROOT 파일 여러 개를 병합하는 방법은?

명령줄에서 hadd merged.root file1.root file2.root 또는 hadd -f output.root input_*.root를 사용합니다. 프로그래밍적으로는 TChain으로 여러 파일의 TTree를 연결합니다: chain->Add("data_*.root"). 두 가지 방법 모두 레퍼런스에 수록되어 있습니다.

ROOT 초보자도 사용할 수 있나요?

네, 각 항목에 핵심 생성자 문법과 가장 일반적인 사용 패턴을 코드 예제로 보여줍니다. 초보자는 TH1F(히스토그램), TTree::Draw(빠른 플롯), TFile(결과 저장)부터 시작하세요. RooFit, RDataFrame, TMinuit 등 고급 주제도 필요할 때 참고할 수 있습니다. 모든 예제는 ROOT 6 C++ 규약을 따릅니다.