---primary
PowerPoint æ¼ç¤ºæ稿 - HEPG
PowerPoint æ¼ç¤ºæ稿 - HEPG
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Using the offline software at BESIII<br />
---<strong>primary</strong><br />
LI Gang<br />
Group meeting, 2006-06-20<br />
1
Content<br />
• BOSS– short introduction<br />
• Starts the jobs of simulation,<br />
reconstruction and analysis<br />
• Using of ROOT<br />
• Popular fit package --- roofit<br />
• Using your generator<br />
All based on BOSS 6.0.0<br />
2
BOSS--- BESIII Offline Software System<br />
Machine: lxplus.ihep.ac.cn, lxslc.ihep.ac.cn<br />
OS : Scientific Linux Cern (SLC)<br />
Compiler : gcc-3.2.3<br />
Framework :Based on GAUDI_v16r4<br />
External lib: lcg/external; geant4 and etc.<br />
Developing language : C++,some FORTRAN<br />
Database : PostgreSql, MySql<br />
Version management tool : CVS<br />
Browsing files in CVS repository : ViewCVS<br />
Configuration management tool : CMT<br />
3
BOSS<br />
Structure(link)<br />
BOOST integrated with BOSS<br />
4
Starts the jobs<br />
• 可 以 按 照 网 页 上 的 说 明 来 建 立 自 己 的 工<br />
作 环 境 。<br />
• 也 可 以 采 用 网 上 给 出 的 脚 本 自 动 建 立 。<br />
• 但 是 , 前 提 是 必 须 有 lxplus 和 lxslc 上 的 帐<br />
号 , 以 及 koala 上 的 cvs 帐 号 ( 用 来 从 cvs<br />
checkout 相 关 的 文 件 )<br />
5
Setting up your CMT environment<br />
• 首 先 , 连 接 CMT<br />
– $mkdir cmthome<br />
– $cp /afs/ihep.ac.cn/bes3/offline/template/cmthome/setupCMT.csh ~/cmthome<br />
注 : 如 果 你 使 用 的 是 bash, 则 copy setupCMT.sh 到 你 的<br />
cmthome 目 录 下 。<br />
• 然 后 , 修 改 login requirements, 设 置 符 合 自 己 要 求 的 配 置<br />
– $cp /afs/ihep.ac.cn/bes3/offline/template/cmthome/requirements ~/cmthome<br />
– 编 辑 requirements 文 件 , 使 其 符 合 你 的 要 求<br />
$vi requirements<br />
注 : 需 要 修 改 的 可 能 有 两 个 地 方 :<br />
set BES_RELEASE 6.0.0<br />
macro WorkArea "/ihepbatch/bes/lig/workarea"<br />
6
author ligang@ihep.ac.cn<br />
# set the SITEROOT<br />
set SITEROOT "/afs/ihep.ac.cn/bes3/offline"<br />
…… … …<br />
# Set release number<br />
macro BES_RELEASE "6.0.0"<br />
#macro BES_RELEASE "nightly_build"<br />
# Setup the CMT search path<br />
set BesArea "$(BES_DIST_AREA)/$(BES_RELEASE)"<br />
path_remove CMTPATH "/sw/dist/"<br />
path_prepend CMTPATH "${BesArea}"<br />
# Setup the CMT search path<br />
set BesArea "$(BES_DIST_AREA)/$(BES_RELEASE)"<br />
path_remove CMTPATH "dist"<br />
path_prepend CMTPATH "${BesArea}"<br />
#Add your worarea to CMTPATH<br />
macro WorkArea "/ihepbatch/bes/lig/workarea"<br />
…… … …<br />
7
• 最 后 , 设 置 环 境 完 成<br />
– source setupCMT.csh<br />
– cmt config<br />
– source setup.csh<br />
– mkdir workarea; cd workarea; cmt co TestRealse<br />
注 : 最 好 把 以 下 语 句 放 到 .tcshrc 文 件 中 :<br />
– source /ihepbatch/bes/lig/cmthome/setupCMT.csh<br />
– source /ihepbatch/bes/lig/cmthome/setupCVS.csh<br />
– source /ihepbatch/bes/lig/cmthome/setup.csh<br />
– source /ihepbatch/bes/lig/workarea/TestRelease/TestRelease-00-00-<br />
14/cmt/setup.csh<br />
8
How to run simulation job<br />
• Assuming you have done:<br />
– Setup your environment in ~/cmthome<br />
– Checkout package TestRelease to your $workarea<br />
• (1) cd TestRelease/*/cmt<br />
• (2) vi requirements<br />
– #======== for Generator ============<br />
– use PartPropSvc PartPropSvc-* Generator<br />
– use Tester Tester-* Generator/BesGenInterface<br />
– use Howl Howl-* Generator/BesGenInterface<br />
– use Radee Radee-* Generator/BesGenInterface<br />
– ……………………………………………………………..<br />
– #========= for Simulation ==============<br />
– use BesSim BesSim-* Simulation/BOOST<br />
9
How to run simulation job<br />
• (3) cmt config<br />
• (4) cmt broadcast gmake<br />
• (5) source setup.csh<br />
• (6) cd ../run<br />
• (7) edit jobOption file: jobOptions_sim.txt<br />
10
jobOptions_sim.txt<br />
– ApplicationMgr.DLLs += { "Tester" , "BesSim" };<br />
– ApplicationMgr.TopAlg += { "BesGenModule" , "BesSim"};<br />
– #include "Bes_Gen.txt"<br />
– #include "PartPropSvc.txt“<br />
– BesSim.Mdc = 1; (0:no construction 1; construction)<br />
– BesSim.Tof = 1;<br />
– BesSim.Emc = 1;<br />
– BesSim.Muc = 1;<br />
– BesSim.Field = true;<br />
– BesSim.PhysicsList = 4;<br />
• 1:BesPhysicsList 2:LHEP_GN<br />
• 3:QGSP_GN 4:QGSP<br />
for BOSS 6.0.0<br />
11
jobOptions_sim.txt<br />
• ApplicationMgr.DLLs += { "G4Svc" };<br />
• ApplicationMgr.ExtSvc += { "G4Svc" };<br />
• // interactive mode<br />
• G4Svc.InteractiveG4 = false;<br />
• //Geant4 run macro, to set directory and file name of output data<br />
• G4Svc.FADSMacro = "run.mac";<br />
• // geant4 verbosity<br />
• G4Svc.RunVerbosity = 1;<br />
• G4Svc.EventVerbosity = 0;<br />
• G4Svc.TrackingVerbosity = 0;<br />
for BOSS 6.0.0<br />
• //number of events to simulate<br />
• ApplicationMgr.EvtMax = 10;<br />
12
How to run simulation job<br />
• (8) edit generator card (run.cards)<br />
– same as genbes.cards in BESII<br />
– the generator name in run.cards must match with algorithm<br />
name in jobOptions_sim.txt<br />
• ApplicationMgr.DLLs += { “Rhopi" , "BesSim" };<br />
• ApplicationMgr.TopAlg += { "BesGenModule" , "BesSim"};<br />
• generator_name 'rhopi‘<br />
• rhopi_ipar 1<br />
– Ineffective control in run.cards<br />
• Event range (controlled in jobOption)<br />
• Random seed (will be added in the future by yugw)<br />
for BOSS 6.0.0<br />
13
Particle ID in run.cards<br />
same as BESII<br />
14
• (9) edit run.mac<br />
How to run simulation job<br />
– /run/runID -9<br />
– /runAction/ascii 1 1 1 1 1 1 1 1 /home/lig/boost.dat<br />
for BOSS 6.0.0<br />
MDCTRUTH TOFTRUTH EMCTRUTH MUCTRUT<br />
H<br />
MDCDIGI<br />
TOFDIG<br />
I<br />
EMCDIGI<br />
MUCDIGI<br />
– you must specify a full directory name, such as<br />
• /ihepbatch/besdata/public/lig/boost.dat<br />
• (10) boss.exe jobOptions_sim.txt<br />
15
• In brief<br />
How to run simulation job<br />
– specify generator algorithm in jobOptions_sim.txt<br />
• ApplicationMgr.DLLs += { “Rhopi" , "BesSim" };<br />
• G4Svc.FADSMacro = "run.mac";<br />
• ApplicationMgr.EvtMax = 10;<br />
– open generator in run.cards<br />
• generator_name ‘rhopi’<br />
– specify output data file in run.mac<br />
• /runAction/ascii 1 1 1 1 1 1 1 1 /home/lig/boost.dat<br />
– using all the other default settings<br />
for BOSS 6.0.0<br />
16
How to run reconstruction job<br />
boss -q jobOptions_rec.txt<br />
#include "Ascii.txt“<br />
#include "PartPropSvc.txt"<br />
//zhangy<br />
#include "$MDCTRKRECONROOT/share/jobOptions_MdcPatRec.txt“<br />
//zangsl<br />
//#include "$TRKRECOROOT/share/jobOptions_TrkReco.txt"<br />
#include "$MDCDEDXALGROOT/share/job_dedx_all.txt"<br />
#include "$EMCRECROOT/share/EmcRecOptions.txt"<br />
#include "$TRKEXTALGROOT/share/TrkExtAlgOption.txt"<br />
#include "$TOFRECROOT/share/jobOptions_TofRec.txt"<br />
#include "$MUCRECALGROOT/share/jobOptions_MucRecTrkExt.txt"<br />
#include "$ROOTIOROOT/share/jobOptions_Save2Root.txt"<br />
17
How to run reconstruction job<br />
// Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING,<br />
5=ERROR, 6=FATAL )<br />
MessageSvc.OutputLevel = 5;<br />
// Number of events to be processed (default is 10)<br />
ApplicationMgr.EvtMax = 200;<br />
EventSelector.InputFiles="AsciiDmp_out.dat";<br />
ApplicationMgr.HistogramPersistency = "ROOT";<br />
RootCnvSvc.digiRootOutputFile =“ggchic.root";<br />
NTupleSvc.Output = { "FILE101 DATAFILE='Mdc.root' OPT='NEW'<br />
TYP='ROOT'", "FILE104 DATAFILE='kalfit.root' OPT='NEW'<br />
TYP='ROOT'", "FILE103 DATAFILE='DeDx.root' OPT='NEW'<br />
TYP='ROOT'", "FILE201 DATAFILE='Tof.root' OPT='NEW'<br />
TYP='ROOT'", "FILE301 DATAFILE='Emc.root' OPT='NEW'<br />
TYP='ROOT'", "FILE401 DATAFILE='Muc.root' OPT='NEW'<br />
TYP='ROOT'" };<br />
18
How to run analysis job<br />
#include "$ROOTIOROOT/share/jobOptions_ReadDst.txt"<br />
#include "$DSTEVENTASSEMBLYALGROOT/share/jobOptions_DstEventAssembly.txt"<br />
#include "jobOptions_BParticles_true.txt"<br />
#include "/ihepbatch/bes/lig/workarea/Analysis/Analysis-00-00-3/Physics/JpsiTagAlg/share/jobOptions_JPsiTag.txt"<br />
// Input DST file name<br />
EventCnvSvc.digiRootInputFile={<br />
"/besdata/public/lig/data/zhangy/psip_kk2f_8105.root",<br />
"/besdata/public/lig/data/zhangy/psip_kk2f_8106.root"};<br />
boss -q jobOptions_ana.txt<br />
G2MuMu.CmsEnergy = 3.686;<br />
RootEvtSelector.Input = "ROOT";<br />
// Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )<br />
MessageSvc.OutputLevel = 4;<br />
// Number of events to be processed (default is 10)<br />
ApplicationMgr.EvtMax = 500000;<br />
// Histogram and Ntuple<br />
ApplicationMgr.DLLs += { "RootHistCnv" };<br />
ApplicationMgr.DLLs += { "NTuples" };<br />
ApplicationMgr.HistogramPersistency = "ROOT";<br />
NTupleSvc.Output = { "FILE1 DATAFILE='tag_zhangy_true.root' OPT='NEW' TYP='ROOT'"};<br />
19
Something important<br />
• /Event/AnalEvent/ : Bparticle<br />
• /Event/EventModel<br />
• /Event/McTruth<br />
• External Package: CLHEP<br />
20
Using of ROOT<br />
•Batch mode<br />
•Interactive mode<br />
•Graphical mode<br />
21
Popular fit package --- roofit<br />
• Roofit 的 功 能 很 强 , 比 如 单 纯 的 拟 合 , 卷<br />
积 , 考 虑 效 率 , 可 扩 展 性 等 。<br />
• 先 安 装 roofit, 如 果 root 的 版 本 比 较 低 。<br />
• 高 版 本 的 root 已 经 把 roofit 集 成 进 来 了 。<br />
•epcfarm 上 , 我 已 经 安 装 了 roofit, 不 过 ,<br />
我 建 议 大 家 自 己 下 载 一 个 新 版 本 的 root 试<br />
着 安 装 一 下 , 这 样 最 简 单 。<br />
• 下 面 看 个 例 子 :<br />
22
#define ETA 0<br />
void eta(){<br />
TFile *f;TTree *t;<br />
// define ppm<br />
f = new TFile("etajuu.root");<br />
RooRealVar ppm("ppm", "two gamma invariant mass", 0.3500, 0.7500,"GeV/c2");<br />
RooRealVar mass("mass0","mass",0.54700,0.3000,0.6000);<br />
//<br />
RooRealVar mass1("mass1","mass",0.13580,0.1000,0.1500);<br />
RooRealVar massresn("mres0","mass Resolution",4.00e-03,0.,0.040);<br />
RooRealVar massresn1("mres1","mass Resolution1",1.00e-02,0.,0.040);<br />
RooRealVar alpha("malpha","mass CB alpha ",1.65e-03,0.,3.000);<br />
RooRealVar dmass("dmass","dmass CB n",1.73645,0.0,30.0);<br />
// get data<br />
t = (TTree *)f->Get("3");<br />
RooDataSet data = RooDataSet("data","data",t,RooArgSet(ppm));<br />
RooPlot* xframe1 = ppm.frame() ;<br />
data.plotOn(xframe1) ; xframe1->Draw() ;<br />
23
}<br />
RooRealVar poly0("poly0","poly0",-1.0e10,1.0e10);<br />
RooRealVar poly1("poly1","poly1",-1.0e10,1.0e10);<br />
RooRealVar poly2("poly2","poly2",-1.0e10,1.0e10);<br />
RooRealVar g1frac("g1frac","fraction of gauss",9.0e-01,0.0,1.0) ;<br />
RooGaussian gauss("gauss", "Signal mass Distribution", ppm, mass1, massresn1);<br />
RooCBShape cbs("cbs","cbs",ppm,mass, massresn,alpha,dmass);<br />
RooPolynomial poly("poly", "Polynomial background ",ppm, RooArgList(poly0, poly1));<br />
RooAddPdf sigDM("CBS","just CBS",RooArgList(cbs),RooArgList(g1frac));<br />
sigDM.fitTo(data,"mhr") ;<br />
RooPlot* xframe2 = ppm.frame() ;<br />
sigDM.paramOn(xframe2,&data,"",1,"NELUC");<br />
data.plotOn(xframe2) ;<br />
sigDM.plotOn(xframe2,Components(cbs),LineStyle(kDashed));<br />
xframe2->getAttLine()->SetLineColor(4);<br />
sigDM.plotOn(xframe2);<br />
TPostScript psout("./eps/etajuu_ggm.eps",113);psout.Off();<br />
if(!psout){cout
Usung your own generator<br />
• Check out the genbes package<br />
• Put your own source code in it and rewrite<br />
the requirement file, add code of<br />
yours;compiling<br />
• Write the interface subroutine (just<br />
modifying a little words)<br />
• Compile them<br />
• Use it as usual<br />
25
Bear in mind these, you can find<br />
help everywhere!<br />
• View the code:<br />
http://koala.ihep.ac.cn/cgi-bin/viewcvs.cgi/BossCvs/<br />
• find help and tutorial :<br />
http://boss.ihep.ac.cn/GuideAndTraining/SetEnv-6.0.2.htm<br />
• You’d better learn some shell or python program languages for<br />
batch mode of simulation, reconstruction and analysis!<br />
Thanks!<br />
26