190 likes | 350 Views
How to run simulation job in BOSS. Deng ziyan 2006.03.01. Introduction. Generator Based on BESII GENBES Integrated with BOSS 30 generators included Simulation Based on Geant4 BOOST integrated with BOSS Ascii data format. How to run simulation job. Assuming you have done:
E N D
How to run simulation job in BOSS Deng ziyan 2006.03.01
Introduction • Generator • Based on BESII GENBES • Integrated with BOSS • 30 generators included • Simulation • Based on Geant4 • BOOST integrated with BOSS • Ascii data format
How to run simulation job • Assuming you have done: • Setup your environment in ~/cmthome • Checkout package TestRelease to your $workarea • (1) cd TestRelease/*/cmt • (2) vi requirements • #======== for Generator ============ • use PartPropSvc PartPropSvc-* Generator • use Tester Tester-* Generator/BesGenInterface • use Howl Howl-* Generator/BesGenInterface • use Radee Radee-* Generator/BesGenInterface • …………………………………………………………….. • #========= for Simulation ============== • use BesSim BesSim-* Simulation/BOOST
How to run simulation job • (3) cmt broadcast cmt config • (4) cmt broadcast gmake • (5) source setup.csh • (6) cd ../run • (7) edit jobOption file: jobOptions_sim.txt
jobOptions_sim.txt for BOSS 5.0.0 • ApplicationMgr.DLLs += { "Tester" , "BesSim" }; • ApplicationMgr.TopAlg += { "BesGenModule" , "BesSim"}; • #include "Bes_Gen.txt" • #include "PartPropSvc.txt“ • BesSim.Mdc = 1; (0:no construction 1; construction) • BesSim.Tof = 1; • BesSim.Emc = 1; • BesSim.Muc = 1; • BesSim.Field = true; • BesSim.PhysicsList = 4; • 1:BesPhysicsList 2:LHEP_GN • 3:QGSP_GN 4:QGSP
jobOptions_sim.txt for BOSS 5.0.0 • ApplicationMgr.DLLs += { "G4Svc" }; • ApplicationMgr.ExtSvc += { "G4Svc" }; • // interactive mode • G4Svc.InteractiveG4 = false; • //Geant4 run macro, to set directory and file name of output data • G4Svc.FADSMacro = "run.mac"; • // geant4 verbosity • G4Svc.RunVerbosity = 1; • G4Svc.EventVerbosity = 0; • G4Svc.TrackingVerbosity = 0; • //number of events to simulate • ApplicationMgr.EvtMax = 10;
How to run simulation job for BOSS 5.0.0 • (8) edit generator card (run.cards) • same as genbes.cards in BESII • the generator name in run.cards must match with algorithm name in jobOptions_sim.txt • ApplicationMgr.DLLs += { “Rhopi" , "BesSim" }; • ApplicationMgr.TopAlg += { "BesGenModule" , "BesSim"}; • generator_name 'rhopi‘ • rhopi_ipar 1 • Ineffective control in run.cards • Event range (controlled in jobOption) • Random seed (will be added in the future by yugw)
Particle ID in run.cards same as BESII
How to run simulation job for BOSS 5.0.0 • (9) edit run.mac • /run/runID -9 • /runAction/ascii 1 1 1 1 1 1 1 1 /home/dengzy/boost.dat • you must specify a full directory name, such as • /ihepbatch/besdata/public/dengzy/boost.dat • (10) boss -q jobOptions_sim.txt
How to run simulation job for BOSS 5.0.0 • In brief • specify generator algorithm injobOptions_sim.txt • ApplicationMgr.DLLs += { “Rhopi" , "BesSim" }; • G4Svc.FADSMacro = "run.mac"; • ApplicationMgr.EvtMax = 10; • open generator in run.cards • generator_name ‘rhopi’ • specify output data file inrun.mac • /runAction/ascii 1 1 1 1 1 1 1 1 /home/dengzy/boost.dat • using all the other default settings
New interface in BOSS 5.1.0 • BOSS 5.0.0 • G4Svc.FADSMacro = "run.mac"; • /runAction/ascii 1 1 1 1 1 1 1 1 /home/dengzy/boost.dat • BOSS 5.1.0 • Control data output in jobOption, not in run.mac • BesSim.AsciiFlag = “11111111"; • BesSim.AsciiFile =“/home/dengzy/boost.dat”;
Ascii data format (boost.dat) { EVHEAD runNo eventNo } EVHEAD { TrackTRUTH trackIndex PDGcode charge originalVertexIndex terminalVertexIndex px py pz minDaughterIndex maxDaughterIndex } TrackTRUTH { VertexTRUTH vertexIndex parentTrackIndex x y z time } VertexTRUTH
Ascii data format (boost.dat) { MDCTRUTH trackIndex layerId cellId edep driftD x y z posFlag } MDCTRUTH { MDCDIGI trackIndex layerNo cellNo energyDeposit driftTime } MDCDIGI { TOFTRUTH trackIndex partId scinNb x y z px py pz trackLength time } TOFTRUTH { TOFDIGI trackIndex partId scinNb forwADC forwTDC backADC backTDC } TOFDIGI
Ascii data format (boost.dat) { EMCTRUTH trackIndex partId numTheta numPhi x y z px py pz totalEdep } EMCTRUTH { EMCDIGI trackIndex partId numTheta numPhi energyDeposit time } EMCDIGI { MUCTRUTH trackIndex partId segId gapId stripId x y z px py pz } MUCTRUTH { MUCDIGI trackIndex partId segId gapId stripId } MUCDIGI http://boss.ihep.ac.cn/SofPro/simulation/AsciiData_format.txt
Geant4 PDGcode http://boss.ihep.ac.cn/SofPro/simulation/PDGsheme.pdf
Data flow • Event • GenEvent • McGenEventCol • McEvent • McParticleCol • MdcMcHitCol • TofMcHitCol • EmcMcHitCol • MucMcHitCol • DigiEvent • MdcDigiCol • TofDigiCol • EmcDigiCol • MucDigiCol Generator BesGenModule ① ② evt.dat Ascii file Simulation BesSim ③ boost.dat Ascii file ④ Reconstruction EmcRec… Transient Data Store EventSelector.InputFiles ="boost.dat"
retrieve MC truth from TDS • retrieve TOF MCtruth from TDS • SmartDataPtr<Event::TofMcHitCol> aMcHitCol(m_evtSvc,"/Event/MC/TofMcHitCol”); • Event::TofMcHitCol::iterator iMcHitCol; • for(iMcHitCol=aMcHitCol->begin(); iMcHitCol!=aMcHitCol->end(); iMcHitCol++) • { • const Identifier ident = (*iMcHitCol)->identify(); • std::cout<<(*iMcHitCol)->getTrackIndex(); • std::cout<<" "<<TofID::barrel_ec(ident);; • std::cout<<" "<<TofID::layer(ident); • std::cout<<" "<<TofID::phi_module(ident); • std::cout<<" "<<(*iMcHitCol)->getPositionX(); • std::cout<<" "<<(*iMcHitCol)->getPositionY(); • std::cout<<" "<<(*iMcHitCol)->getPositionZ(); • std::cout<<" "<<(*iMcHitCol)->getPx(); • std::cout<<" "<<(*iMcHitCol)->getPy(); • ………………………………… • }
retrieve digit from TDS • retrieve TOF digits from TDS • SmartDataPtr<TofDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/TofDigiCol"); • TofDigiCol::iterator iDigiCol; • for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++) • { • const Identifier ident = (*iDigiCol)->identify(); • std::cout<<"partId: "<<TofID::barrel_ec(ident); • std::cout<<" layer: "<<TofID::layer(ident); • std::cout<<" scinNb: "<<TofID::phi_module(ident); • std::cout<<" charge: "<<(*iDigiCol)->getChargeChannel(); • std::cout<<" time: "<<(*iDigiCol)->getTimeChannel()<<std::endl; • }
The end! Any questions or suggestions?