560 likes | 735 Views
FAIR Simulation & Analysis Framework FairRoot. Mohammad Al-Turany (IT-GSI) Denis Bertini (IT-GSI) Florian Uhlig (IT-GSI). Motivation FairRoot Features CMake: Testing and building system Geometry Interface Runtime Database and Parameter Handling Fast simulation
E N D
FAIR Simulation & Analysis FrameworkFairRoot Mohammad Al-Turany (IT-GSI) Denis Bertini (IT-GSI) Florian Uhlig (IT-GSI)
Motivation FairRoot Features CMake: Testing and building system Geometry Interface Runtime Database and Parameter Handling Fast simulation Integrated Track follower (Geane) Event display Grid Summary Overview M. Al-Turany Root@HeavyIon
Which simulation engine to choose? One would like to use the modern and maintained GEANT4 But: We have to: Work fast ! ( LOI, TDR deadlines … ) Make reliable simulation In the CBM community and locally at the GSI : Better knowledge of “old” MC’s: GEANT3, FLUKA … less knowledge about GEANT4 ( intrinsic cuts / physics list …) It was extremely difficult to get support for working with Geant4 Motivation M. Al-Turany Root@HeavyIon
No Executable: (Only Rootcint) Compiled Tasks for analysis, reconstruction, etc. Root macros for steering simulation or reconstruction Root macros for configurations (G3, G4, external decyers, etc.) The same framework can be used for Simulation and Analysis VMC and VGM for simulation TTask to organize the analysis data flow Use of TGeoManager for Simulation and Reconstruction Eve (Alice Event display) as base for a general event display Dynamic Event structure based on ROOT tree Features M. Al-Turany Root@HeavyIon
Use of a Geometry Interface. G3 Native geometry Geometry Modeller (TGeoManager) Different geometry input format Grid: AliEn is working fine for us and we use it! CMake: Makefiles, dependencies , QM ,... Doxygen for class documentation Use PROOF for interactive analysis Features M. Al-Turany Root@HeavyIon
Dynamic Tree creation at initialization time TFolder to organize memory Simulation: CbmDetector::Init() Analysis: CbmTask::Init() ( automatic partial IO ) Chaining Input data TChain services Connection of Data levels Use of Root Friend mechanism FairRoot IO M. Al-Turany Root@HeavyIon
Tasks 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) M. Al-Turany Root@HeavyIon
Geant3 ROOT G3VMC Geant4 G4VMC Geometry Virtual MC FlukaVMC FLUKA Root files Hits, Digits, Tracks Cuts, processes Application IO Manager Track propagation Run Manager RTDataBase Event Display Root files Conf, Par, Geo Event Generator Magnetic Field Detector base Tasks STS Hit Producers Hit Producers STT Dipole Map Dipole Map Pluto DPM TOF TOF Solenoid Map Active Map ECAL EMC Oracle Conf, Par, Geo const. field digitizers digitizers Urqmd EVT TRD MUO const. field MVD MVD Track finding Track finding ASCII ASCII ZDC TPC MUCH DIRC CBM Code Panda Code RICH DCH Design Close contact common developments Always in close contact M. Al-Turany Root@HeavyIon
Simulation-Reconstruction Chain Determine particle properties at target vertex Event Generator Transport particles through the detector material Transport SIM Full Simulation Digitizer Determine detector response RAW Fast Simulation Determine physical space point parameters from detector hits Storage Levels Hit Finder Analysis Determine momentum vector and PID for all tracks Reconstruction Physics Analysis Calculate physics observables M. Al-Turany Root@HeavyIon
Why CMake: It supports great variety of platforms ( basically every *ix, Mac OS, Windows) ( Win: Borland, MS Visual C++, cygwin, mingw) CMake generates out of simple rules native Makefiles for all supported platforms Input files (rules) are the same on all platforms CMake additionally can produce project files for IDE's (KDevelop, XCode, VStudio) Big community because Cmake is the build tool for KDE 4 CMake has a testing framework Porting FairRoot to Mac OS X took 30 minutes Porting the rest of the needed Software (Root, Geant4 etc.) took more than 1 week CMake M. Al-Turany Root@HeavyIon
Large code base is too large/complicated for a single developer to understand/maintain Identify problems when they occur Project depends on external packages which can cause problems Provide direct feedback to the developers as they experiment with new features Why test daily M. Al-Turany Root@HeavyIon
Update source from SVN Generate Makefiles Build the project Run Tests Submit results to a webserver Define automatic testing M. Al-Turany Root@HeavyIon
Software Process Dashboards SVN maintains source code revision CTest/CMake compiles and test the newly commited source code on distributed clients Typical developer checks in code Developer reviews the results M. Al-Turany Root@HeavyIon
Client/Server architecture Cross platform testing Memory testing (purify, valgrind) Coverage testing Create documentation on a nightly basis (Doxygen) Check coding conventions (Rule Checker) Dashboards If it's not tested it's not working M. Al-Turany Root@HeavyIon
CbmRoot Quality Dashboard M. Al-Turany Root@HeavyIon
Rule Checker Need to change the rules according to CBM/Panda Coding Conventions M. Al-Turany Root@HeavyIon
Hades Geometry interface Advantage: more flexibility : different inputs can be used. closer to technical drawings and analysis coordinate systems Oracle interface Hades geometry table design reusable Step converter (Tobias Stockmann) Step To Root Step To Hades ASCII Step To DDL (Not used in FairRoot) Defined directly (TGeo) in the detector code (make sense for certain geometries CbmEcal, PandaEMC) Detector geometry in FairRoot M. Al-Turany Root@HeavyIon
Step converter : Status? DDL output CBM output Root output supports now: box tube cone trap subtraction-solid Arb8 Xtru Tobias Stockmanns, FZ Jülich M. Al-Turany Root@HeavyIon
CAD converter, updates and improvements Usage of CAD converter tool was already successful for MVD Tobias Stockmanns M. Al-Turany Root@HeavyIon
CAD converter, updates and improvements Solenoid, Barrel Yoke Some geometries are too complex to convert “blindly” Tobias Stockmanns M. Al-Turany Root@HeavyIon
RootBooleanPart - Tobias Stockmanns, FZ Jülich M. Al-Turany Root@HeavyIon
Finally in TGeo: M. Al-Turany Root@HeavyIon
Runtime Database The Runtime Database is the manager class for all Parameter containers: Creation, Initialization, Output Runtime Database Created in the init() function of the tasks via the container factories or in the macro Container Factories 2 Inputs 1 Output List of Parameter Containers List of Runs read() write() Filled during initialization ASCII File ROOT File Oracle IO defined in the macro M. Al-Turany Root@HeavyIon
For time dependent information a version management is needed which fulfills the following requirements: It must be possible to get a consistent set of information for any date (e.g.the start time of a certain run). To preserve the history, no information - even if wrong - should be overwritten without trace, which means that only inserts should be made, no deletes nor updates. It must be possible to get an answer to the question: 'Which parameters were used when analyzing this run X years ago?' (The calibration might have been optimized several times since this date. Maybe some bugs have been detected and corrected in the mean time.) Version management in Oracle M. Al-Turany Root@HeavyIon
Time dependant entries have a time stamp (date + time with the precision of one second) in form of three columns (Format: DATE): valid_since :First date when the entry is valid. valid_until :Last date when the entry is still valid invalid_since :Date when the entry is replaced by a correct entry or a better version in case of e.g. calibration parameters and therefore gets invalid. Version management in Oracle M. Al-Turany Root@HeavyIon
Initialisation scheme (Analysis) CbmTask Parameters Data CbmParIo File=1 RunId1 RunId1 CbmTask::SetContainers() CbmTask::init() Par. Cont. Sim. Data CbmTask::Exec() CbmParIo CbmTask::Reinit() RunId2 File=2 RunId2 Par. Cont Sim. Data CbmTask::Exec() M. Al-Turany Root@HeavyIon
PANDA: Fast Simulations Full Simulation Fast Simulation Event Generation Particle Transport Digitization Calibration Reconstruction Effective parametrization - acceptance cuts - resolution smearing - PID info Physics Analysis Klaus Goetzen M. Al-Turany Root@HeavyIon
Comparison to Full Sim are reasonable(channel: pp DsDs0) Compared to Full Sim (10 k Signal events; absolute numbers) M. Al-Turany Root@HeavyIon
Overall multiplicityper pp candidateare quite reasonable(channel: pp DsDs0) Split offs – Compared to Full Sim 0 mass shape andbackground also looksquite ok M. Al-Turany Root@HeavyIon
The integration into the VMC (TGeant3) is done In FairRoot: Geane can be used in the analysis or from macro Propagation to Length Plane Volume (Enter or Exit point) To Line To Point Point of closest approch on a wire Geane Integration in FairRoot New Methods introduced by Pavia group in PANDA M. Al-Turany Root@HeavyIon
Muon Absorber in CBM M. Al-Turany Root@HeavyIon
RMS 0.95 RMS 0.93 RMS 0.93 RMS 0.92 We have defined a plane to which we extrapolate the track parameters. RMS 0.92 Pulls for the Panda STT 500 MeV/c Kapton 1.42 g/cm3 Isobutan 2.7e-3 g/cm3 M. Al-Turany Root@HeavyIon
A new package Eve (Event Visualization Environment )is introduced to ROOT 5.17.06 Built on top of ROOT's GUI, GL and GED infrastructure Based on experiment-independant part of the ALICE event display It has been used in ALICE for more than a year to perform high-level event visualization, debugging of simulation and reconstruction code as well as for raw-data visualization. ROOT : New Event Display M. Al-Turany Root@HeavyIon
Eve in FairRoot • Integration is straight forward (already done) • Some features can be used directly (even from macro) M. Al-Turany Root@HeavyIon
Examples: Panda Detector M. Al-Turany Root@HeavyIon
FairEventManager: (Sub-class of TEveEventManager) Read Events directly from FairRoot Tree Select Events for Display Apply cuts to whole event Navigation (Next Event, Previous Event and Event No) Read and display the geometry FairEventManager M. Al-Turany Root@HeavyIon
FairRootManagerEditor M. Al-Turany Root@HeavyIon
panda_eve() { ................ gSystem->Load("libEventDisplay"); CbmRunAna *fRun= new CbmRunAna(); fRun->SetInputFile("testsimu10.root"); fRun->LoadGeometry(); FairEventManager *fMan= new FairEventManager(); FairMCTracks *Track = new FairMCTracks ("Monte-Carlo Tracks"); FairMCPointDraw *MvdPoints = new FairMCPointDraw ("MVDPoint"); FairMCPointDraw *EMCPoints = new FairMCPointDraw ("EmcPoint"); fMan->AddTask(Track); fMan->AddTask(MvdPoints); fMan->AddTask(EMCPoints); .................. fMan->Init(); } Event Display Macro M. Al-Turany Root@HeavyIon
CBM: Points and Tracks M. Al-Turany Root@HeavyIon
CBM Muon detector M. Al-Turany Root@HeavyIon
Examples: Panda Detector (MVD) M. Al-Turany Root@HeavyIon
Examples: HADES Detector M. Al-Turany Root@HeavyIon
Any TGeoManager based geometry can be used directly Combined with trajectory visualization in FairRoot, it can be used directly from macro to display TGeoTracks (MC Tracks) and all sub-classes of CbmPoint A task which should handle CbmHit subclasses is in preparation. Digits has to be implemented by detectors Status Event Diplay M. Al-Turany Root@HeavyIon
TEveTrack and TEveTrackPropagator: Can be used directly with Track visualization option in FairRoot MCTracks and Reconstructed Tracks Need A realistic track propagator Field maps has to be taken into account Possible solution would be Geane Propagator!! Status Event Diplay: Tracks M. Al-Turany Root@HeavyIon
Upgraded to version 2-13 at the last Grid Workshop, Vienna, 1-5 October 2007 Existing sites Ateneo/Manila Kilian Schwarz and Dan Protopopescu M. Al-Turany Root@HeavyIon
Control panel Centralised control of all sites is now implemented via MonALISA: services can be remotely (re)started/stopped, Kilian Schwarz and Dan Protopopescu M. Al-Turany Root@HeavyIon
In recent test productions on the Grid the simulation-analysis chain presented by S. Lange in the last PandaRoot status talk (September 2007 meeting) has been used Simulation-analysis chain Kilian Schwarz and Dan Protopopescu M. Al-Turany Root@HeavyIon
Some arbitrary submission id Job jdl and scripts – FairRoot on Grid Kilian Schwarz and Dan Protopopescu M. Al-Turany Root@HeavyIon
Results Message from the validation job M. Al-Turany Root@HeavyIon