이 문구를 올바르게 표현하는 방법을 모르겠지만이 작업을 수행하려고합니다. 하나의 막대 그래프는 다음 명령을 CERN ROOT를 사용하여 그릴 수 있습니다가변 변수 이름을 사용하여 ROOT에 히스토그램을 그릴 경우
,
(TH1F*)electron->Draw();
그러나 나는 등등 electron1, elecron2, electron3과 같은 순서로 명명 된 히스토그램의 수십, 내가 원하는 한 간단한 루프를 작성하여 모두 그려보십시오. 나는 sprintf와 간단한 for 루프를 사용해 보았지만 ROOT는 그것을 좋아하지 않는다.
char name[20];
(TH1F*)electron->Draw();
for(int j=0;j<5;j++){
sprintf(name, "%s%d","electron",j);
(TH1F*)name->Draw("same");
}
내가 뭘 잘못하고 있니?
미리 감사드립니다.
정답입니다. ROOT의 스타일을 완벽하게 따르는 동안,'std :: string'과'boost :: lexical_cast'를 사용하면 훨씬 더 이상적인 C++이지만, 작동하지 않으므로 대부분의 ROOT 사용자에게 혼란을 줄 수도 있습니다 CINT 매크로에서도 잘 작동합니다. –
감사합니다. 당신이 아마 뿌리가 C++의 많은 것을 생각하지 않는다는 것을 알고있을 겁니다. –
곧 모든 것들은 clint가 cint를 대체하는 root-6의 릴리스와 함께 바뀔 것입니다. 누구나 현대적인 C++에 대한 높은 기능 수준의 프로그램을 제공 할 것입니다. 한때 알고리즘을 데이터 컨테이너에 매핑하는 몇 가지 라인에서 다양한 히스토그램을 작성하고 채우기 위해 20k 라인에 대해 스파게티 된 루트 매크로가 수행됩니다. 예, 우리가 ROOT 분석 매크로에 적절한 C++을 작성할 수있게되면 우리가 할 수있는 일을 할 수있게 될 것입니다. –