28.09.2015 Views

---primary

PowerPoint 演示文稿 - HEPG

PowerPoint 演示文稿 - HEPG

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!