28.09.2015 Views

---primary

PowerPoint 演示文稿 - HEPG

PowerPoint 演示文稿 - HEPG

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!