Status of software Status of software development fordevelopment for
MPD MPD
Oleg Rogachevskyfor MPD collaboration
Round Table discussion III5 November 2008
Dubna
05 November 2008 Round Table III 2
Software Simulation - Analysis chain Software Simulation - Analysis chain
Event Generator
Transport
Digitizer
Hit Finder
Reconstruction
Physics Analysis
Sim
ula
tio
nA
nal
ysis
Determine particle properties
at target vertex
Transport particles through
the detector material
Determine detector response
Determine physical space point
parameters from detector hits
Determine momentum vector
and PID for all tracks
Storage
Levels
SIM
RAW
05 November 2008 Round Table III 3
FairRoot Features FairRoot Features
• The same framework can be used for Simulation and Analysis
• Fully ROOT based:– VMC for simulation – IO scheme (TChain, friend TTrees, TFolders ) for persistency– TTask to organize the analysis data flow
• Completely configurable via ROOT macros
• Easy to maintain (only ROOT standard services are used)
• Geometry / navigation system models– G3/G4 Native geometrical models – Geometry Modeller (TGeoManager) ( G3/FLUKA + G4?)
05 November 2008 Round Table III 4
MpdRoot – extension of FairRoot MpdRoot – extension of FairRoot
FairRoot (Former CbmRoot) has started at the end of 2003First released in March 2004Oct 04 release was used to produce data for the CBM technical report June 05 release ( Hades initialization scheme adapted ) Sept. 06 PANDA collaboration decided to use CbmRoot as simulation and
analysis frameworkOct. 06 CbmRoot was renamed to FairRoot
Oct. 07 MPD group started to use FairRoot as framework for MPD simulation
Details in http://cbmroot.gsi.de
05 November 2008 Round Table III 5
FairRoot: external softwareFairRoot: external software
ROOT 5.20
Geant4 4.9.p02
Geant3.21+vmc.1.9 (r227)
VGM 3.0
Geant4 VMC (2.5)
CLHEP 2.0.3.3
ApMon -Application Monitoring API for C++ (v. 2.2.5)
Cmake 2.6.0 (optional)
GSL (GNU Scientific Library)
PLUTO (v.412)
Pythia6
Boost (1.35)
05 November 2008 Round Table III 6
MpdRoot: SVN repositoryMpdRoot: SVN repository
WEB page: http://xfarm4.jinr.ru/viewvc/trunk
05 November 2008 Round Table III 7
MpdRoot: Simulation MpdRoot: Simulation
ROOT
Run Manager
Virtual MC Geant3
Geant4
FLUKA
Particle Generator
ASCII
Pipe
TPC
Straw EC
Cave
TOF
Magnet
ZDC
EVGEN
Primary Generator
Urqmd
Magnetic
Field
Module
Detector
GeometryManager
IO Manager
Tasks
Field Map
GeoInterface
ETOF
RunTimeDataBase
FastMC
MySQLConfigurati
on, Parameter
s,Geometry
Root filesConfiguration, Parameters,Geometry
05 November 2008 Round Table III 8
TPC implementationTPC implementation((Yu. Zanevsky groupYu. Zanevsky group) )
MC geometry
Pad responce
05 November 2008 Round Table III 9
TOF implementationTOF implementation((V. Golovatyuk groupV. Golovatyuk group) )
MC geometry
Mass separation
05 November 2008 Round Table III 10
ECAL implementationECAL implementation((I. Tyapkin groupI. Tyapkin group) )
0 extraction
M(MeV)
Occupancy in the END CAP calorimeterDetector size – 3x3 cm2
Occupancy in the BARREL calorimeterDetector size – 3x3 cm2
π° after background subtraction
π° with combinatorial background
05 November 2008 Round Table III 11
ZDC implementationZDC implementation((A. Kurepin & A. Litvinenko groupA. Kurepin & A. Litvinenko group) )
Trigger & centralitydetermination
MC geometry
05 November 2008 Round Table III 12
StrawECT implementationStrawECT implementation((V.Peshekhonov groupV.Peshekhonov group) )
Extension of the pseudorapidity
region
MC geometry
05 November 2008 Round Table III 13
MPD Event display MPD Event display
ZDC
TOFTPC
ETOF
StrawECT
05 November 2008 Round Table III 14
Detector simulation Detector simulation
System MC Geometry Digitisation
TPC segmented hitproducer
Straw ECT segmented hitproducer
ETOF monolitic
TOF Segmented hitproducer
ECAL Segmented Shower model
ZDC Segmented Hitproducer
05 November 2008 Round Table III 15
MpdRoot: AnalysisMpdRoot: Analysis
ROOT
Run Manager
EVGEN
Primary Generator
Magnetic
Field
Module
Detector
Geometry
Manager
IO Manager
Tasks
AnalysisTrackingdigitizers
GeoInterface
RunTimeDataBase
Root filesConfiguration, Parameters,Geometry
MySQL
Configuration, Parameters,
Geometry
Root filesMCPoints, Hits,
Digits, Tracks
05 November 2008 Round Table III 16
Tracking Tracking
UrQMDAuAu collisionat s = 9 GeV
b = 0Nparticles > 1000
05 November 2008 Round Table III 17
Tracking in TPCTracking in TPC(Zinchenko A.)
prelim
inary
prelim
inary
05 November 2008 Round Table III 18
Global TrackingGlobal Tracking((TPC + StrawECT + ETOF)TPC + StrawECT + ETOF)
Efficiency vs pseudorapidity
Momentum resolution
prelim
inary
05 November 2008 Round Table III 19
Physics analyses Physics analyses
Monte Carlo codes:Monte Carlo codes::
UrQMD v. 2.3
Pluto v. 4.12
Pythia 6
SHIELD (N.Sobolevsky INR)
FastMC (N. Amelin et al.)
Nuclear cascade ( K.Gudima et al. IAP ASM Moldova)
Physical observables:Physical observables:
flow, HBT correlation, multiplicity fluctuation, pt fluctuation, strangeness-to-entropy ratio
Details in G.Musulmanbekov’s report
05 November 2008 Round Table III 20
Software for SPD Software for SPD
First version has been done with Geant4
Started to implement detector geometry into
mpdroot framework
Look at A.Nagaitsev’s report
05 November 2008 Round Table III 21
Computing Computing
NICA/MPD PC farm:
2 interactive PC
5 Tb disk space
Scientific Linux 5.2
All external packages for MpdRoot are installed &
configured
MpdRoot is taken from svn repository
~ 30 users
05 November 2008 Round Table III 22
Summary & ToDo ListSummary & ToDo List
• Software framework for MPD (MpdRoot) can be used for detailed simulation of detectors geometry and response
• Basic detectors of MPD are implemented in the framework
• Study of the track reconstruction is in progress
• More realistic detectors responses (hit produsers)
• Join physics analyses with detector simulation
05 November 2008 Round Table III 23
Virtual Monte Carlo (VMC)Virtual Monte Carlo (VMC)
FLUKA transportFLUKA
User Code
VMC
Geometrical Modeller
G3 G3 transport
G4 transportG4
Reconstruction
Visualisation
05 November 2008 Round Table III 24
ASCII: Input format for the GeometryASCII: Input format for the Geometry
Creation of a volume
Volume name
Shape
Shape parameters
Medium
Positioning of the volume in a mother (Node)
Mother
Transformation (position and rotation matrix)
TUBE
pipe_1caveTUBEcarbon0. 0. -50.0. 5.50. 0. 100.
0. 0. 0.1. 0. 0. 0. 1. 0. 0. 0. 1.// *********************************************
pipe_vac_1pipe_1TUBEvacuum0. 0. -50.0. 5.0. 0. 100.
0. 0. 0.1. 0. 0. 0. 1. 0. 0. 0. 1.// *********************************************targetpipe_vac_1TUBEgold0. 0. -0.250. 2.50. 0. 0.250. 0. 0.1. 0. 0. 0. 1. 0. 0. 0. 1.
x
y
z. .
x
y
z
x
y
z. .
05 November 2008 Round Table III 25
Material & Geometry InterfaceMaterial & Geometry Interface
OracleDB
ASCII
CbmGeoInterface
TGeo Geometry/MaterialTGeoVolumeTGeoNode
TGeoMaterial
RootBuilderG3Builder
G3 Geometry/Material
XYZBuilder
XYZ Geometry/Material
Rootfiles
Advantage:
more flexibility : different inputs can be used.
05 November 2008 Round Table III 26
CBM Runtime DatabaseCBM Runtime Database
Runtime Database
2 Inputs
1 Output
List of Parameter Containers
ASCII File
ROOT File
Oracle
List of Runs
The Runtime Database is the manager class for all Parameter containers:
Creation, Initialization, Output
Container Factories
IO defined in the macro
Created in the init() function of the tasks via the container factories or in the macro
Filled during initialization
read()write()
05 November 2008 Round Table III 27
IO FeaturesIO Features
• Dynamic Tree creation at initialisation time– Simulation: CbmDetector::Init()– Analysis: CbmTask::Init()
• ( automatic partial IO )
• Chaining Input data– TChain services
• Connection of Data levels– Use of Root Friend mechanism
• Combined Chaining & Friend Mechanism
05 November 2008 Round Table III 28
Simulation Macro – loading LibsSimulation Macro – loading Libs
Base Libs
Cbm Spec. Libs
// Load basic libraries
gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
basiclibs();
// Load CBMROOT libraries
gSystem->Load("libGeoBase");
gSystem->Load("libParBase");
gSystem->Load("libCbm");
gSystem->Load("libPassive");
gSystem->Load("libGen");
gSystem->Load("libSts");
gSystem->Load("libTrd");
gSystem->Load("libTof");
gSystem->Load("libRich");
05 November 2008 Round Table III 29
Simulation MacroSimulation Macro
//create the Run Class
CbmRunSim *fRun = new CbmRunSim();
// set the MC version used
fRun->SetName("TGeant3"); //for G4 use "TGeant4"
//Choose the Geant 3 Navigation System
fRun->SetGeoModel("G3Native"); // "TGeo" flag in case of TGeoManager
// choose an output file name
fRun->SetOutputFile("test.root");
05 November 2008 Round Table III 30
Simulation Macro- Create ModulesSimulation Macro- Create Modules
CbmModule *Cave= new CbmCave("WORLD");
Cave->SetGeometryFileName("PASSIVE/CAVE", "v03a");
fRun->AddModule(Cave);
CbmModule *Target= new CbmTarget("Target");
Target->SetGeometryFileName("PASSIVE/TARGET", "v03a");
fRun->AddModule(Target);
CbmModule *Pipe= new CbmPIPE("PIPE");
Pipe->SetGeometryFileName("PASSIVE/PIPE", "v03a");
fRun->AddModule(Pipe);
CbmModule *Magnet= new CbmMagnet("MAGNET");
Magnet->SetGeometryFileName("PASSIVE/MAGNET", "v03a");
fRun->AddModule(Magnet);
05 November 2008 Round Table III 31
Simulation Macro- Create DetectorsSimulation Macro- Create Detectors
CbmDetector *STS= new CbmSts("STS", kTRUE);
STS->SetGeometryFileName("STS/STS", "v03c");
fRun->AddModule(STS);
CbmDetector *TOF= new CbmTof("TOF", kTRUE );
TOF->SetGeometryFileName("TOF/TOF", "v03_v10");
fRun->AddModule(TOF);
CbmDetector *TRD= new CbmTRD("TRD",kFALSE );
TRD->SetGeometryFileName("TRD/TRD", "v04b_9" );
fRun->AddModule(TRD);
05 November 2008 Round Table III 32
Simulation Macro-Simulation Macro-Event GeneratorsEvent Generators
CbmPrimaryGenerator *priGen= new CbmPrimaryGenerator();
fRun->SetGenerator(priGen);
CbmUrqmdGenerator *fGen1= new CbmUrqmdGenerator("00-03fm.100ev.f14");
CbmPlutoGenerator *fGen2= new CbmPlutoGenerator("jpsi.root");
CbmParticleGenerator *fGen3= new CbmParticleGenerator();
fRun->AddGenerator(fGen1);
fRun->AddGenerator(fGen2);
fRun->AddGenerator(fGen3);
05 November 2008 Round Table III 33
Simulation Macro-Magnetic FieldSimulation Macro-Magnetic Field
// setting a field map
CbmField *fMagField= new CbmField("Dipole Field");
fMagField->readAsciifile("FieldIron.map"); // read ASCII file
fMagField->readRootfile("FieldIron.root"); // read Root file
// setting a constant field
CbmConstField *fMagField=new CbmConstField();
fMagField->SetFieldXYZ(0, 30 ,0 ); // values are in kG
// MinX=-75, MinY=-40,MinZ=-12 ,MaxX=75, MaxY=40 ,MaxZ=124 );
fMagField->SetFieldRegions(-74, -39 ,-22 , 74, 39 , 160 ); // values are in cm
fRun->SetField(fMagField);
05 November 2008 Round Table III 34
Simulation Macro- Run SimulationSimulation Macro- Run Simulation
fRun->Init(); // Initialize the simulation
Simulation:
1. Initialize the VMC (Simulation)
2. Initialize Tasks (if they are used in Simulation)
fRun->Run(NoOfEvent); //Run the Simulation
05 November 2008 Round Table III 35
Analysis MacroAnalysis Macro
{
gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
basiclibs();
gSystem->Load("libCbm");
gSystem->Load("libITrack");
CbmRunAna *fRun= new CbmRunAna();
fRun->SetInputFile(“/d/STS_AuAu25Gev_Urqmd.root");
fRun->SetOutputFile(“trackOutput.root");
05 November 2008 Round Table III 36
Algorithms : CBMTaskAlgorithms : CBMTask
• Tasks can be organized into a hierarchy and displayed in the browser.
• The CBMTask base class (TTask): – Init(); //Initialization – Exec(Option_t * option);
• In Analysis macro:{
// Algorithm definition
CbmStsTrackFinder *tr = CbmStsTrackFinder("track finder");
// Add the algorithm in the list of algorithms
fRun->AddTask(tr);
}
05 November 2008 Round Table III 37
Tasks MechanismTasks Mechanism
CBMTask *Task1=new CBMTask("Task1") CBMTask *Task2=new CBMTask("Task2")
CBMTask *Task3=new CBMTask("Task3")
CBMTask *Task4=new CBMTask("Task4")
CBMTask *Task5=new CBMTask("Task5")
CBMTask *Task6=new CBMTask("Task6")
Task1->Add(Task2)
Task1->Add(Task3)
Task2->Add(Task4)
Task2->Add(Task5)
Task3->Add(Task6)
Task1
Task2 Task3
Task4 Task6Task5
05 November 2008 Round Table III 38
Initialisation scheme (Analysis)Initialisation scheme (Analysis)
File=1
File=2
RunId1
RunId2
Sim. Data
Sim. Data
CbmTask Parameters
RunId1
RunId2
Par. Cont.
Par. Cont
CbmTask::SetContainers()CbmTask::init()
CbmTask::Exec()
CbmTask::Exec()
CbmTask::Reinit()
CbmParIo
CbmParIo
Data
05 November 2008 Round Table III 39
Track VisualizationTrack Visualization
05 November 2008 Round Table III 40
Example: Visualization macroExample: Visualization macro
{
gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
basiclibs();
gSystem->Load("libCbm");
......
TFile* file = new TFile("test.root");
TGeoManager *geoMan = (TGeoManager*) file->Get("CBMGeom");
TCanvas* c1 = new TCanvas("c1", "", 100, 100, 800, 800);
c1->SetFillColor(10);
geoMan->DrawTracks("same/Nneutron");
geoMan->SetVisLevel(3);
geoMan->GetMasterVolume()->Draw("same");
}