1 / 51

CBM Simulation & Analysis Framework for Virtual Monte Carlo Concept

This framework explores the use of Virtual Monte Carlo (VMC) concept for simulation and analysis in the CBM experiment. It includes features such as geometry interface, runtime database, and parameter handling. The framework supports various MC engines like GEANT3, GEANT4, FLUKA, and others, allowing for cross-checking of simulation results. It is fully ROOT-based, configurable through ROOT macros, and easy to maintain.

basilm
Télécharger la présentation

CBM Simulation & Analysis Framework for Virtual Monte Carlo Concept

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CBM Simulation&Analysis FrameworkCbmroot Mohammad Al-Turany (IT-GSI) Denis Bertini (IT-GSI) Ilse König (Hades-GSI)

  2. Motivations The Virtual Monte Carlo concept CbmRoot Features Geometry Interface Runtime Database and Parameter Handling Examples (Simulation and Analysis) Summary Overview CHEP06

  3. Which simulation engine to choose? Need to move to modern and maintained MC: GEANT4 Need for Working fast ! ( LOI, TDR deadlines … ) Making reliable simulation Usually: better knowledge of “old” MC’s: GEANT3, FLUKA … A cross-check of simulation results between different MC is needed Better understanding of GEANT4 ( intrinsic cuts / physics list …) Preparing for full simulation Use of VMC (Virtual Monte Carlo ) : an interface between MCs With the same code, the user can switch between different MCs Motivations CHEP06

  4. G3 G3 transport User Code VMC G4 G4 transport FLUKA transport FLUKA Reconstruction Virtual Geometrical Modeller Geometrical Modeller Visualisation Virtual Monte Carlo (VMC) CHEP06

  5. CBM experiment@GSI • tracking, vertex reconstruction: radiation hard silicon pixel/strip detectors (STS) in a magnetic dipole field • electron ID: RICH1 & TRD (& ECAL)  p suppression  104 • hadron ID: TOF (& RICH2) • photons, p0, m: ECAL • high speed DAQ and trigger ECAL RICHs magnet beam TOF TRDs target STS CHEP06

  6. 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) Use of a Geometry Interface. G3 Native geometry Geometry Modeller (TGeoManager) Features CHEP06

  7. Oracle Configuration, Parameters, Geometry CBM Simulation ROOT Geant3 Geometry Manager Virtual MC Geant4 Magnet FLUKA Target IO Manager GeoInterface Run Manager PIPE RunTime DataBase Cave Module Primary Generator Magnetic Field STS Root files Configuration, Parameters, Geometry Detector TRD Tasks EVGEN TOF Particle Generator RICH Pluto Field Map ECAL ASCII Urqmd CHEP06

  8. Oracle Configuration, Parameters, Geometry CBM Analysis Root files MCPoints, Hits, Digits, Tracks ROOT Geometry Manager IO Manager GeoInterface Run Manager RunTime DataBase Module Primary Generator Magnetic Field Root files Configuration, Parameters, Geometry Detector Tasks EVGEN Delta digitizers Tracking CHEP06

  9. Advantage: more flexibility : different inputs can be used. closer to technical drawings and analysis coordinate systems Oracle interface Hades geometry table design reusable CBM Geometry Interface CHEP06

  10. Creation of a volume Volume name Shape Shape parameters Medium Positioning of the volume in a mother (Node) Mother Transformation (position and rotation matrix) y x z ROOT / GEANT3 input format for the geometry pipe_1 0 world 0.000 0.000 5.000 1. 0. 0. 0. 1. 0. 0. 0. 1. carbon TUBE 0.000 0.550 5.000 #fi pipe_vac_1 0 pipe_1 0.000 0.000 0.000 1. 0. 0. 0. 1. 0. 0. 0. 1. vacuum TUBE 0.000 0.500 5.000 #fi target 1 World Causes overlap! 0.000 0.000 0.000 1. 0. 0. 0. 1. 0. 0. 0. 1. gold TUBE 0.000 0.25 0.025 #fi TUBE Most shapes: Geometrical center of daughter is positioned in geometrical center of mother. Change of the size of the mother Repositioning of mother and of all its daughters CHEP06

  11. The position of the local coordinate system of a volume must NOT be the geometrical center. The positioning of the daughter is independent of the size and shape of the mother. y x z Input format for the geometry . . pipe_vac_1 pipe_1 TUBE vacuum 0. 0. -50. 0. 5. 0. 0. 100. 0. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1. // ********************************************* target pipe_vac_1 TUBE gold 0. 0. -0.25 0. 2.5 0. 0. 0.25 0. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1. z/mm -50 0 100 pipe_1 cave TUBE carbon 0. 0. -50. 0. 5.5 0. 0. 100. 0. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1. // ********************************************* CHEP06

  12. Material & Geometry Interface TGeo Geometry/Material TGeoVolume TGeoNode TGeoMaterial Oracle DB CbmGeoInterface ASCII G3 Geometry/Material G3Builder RootBuilder XYZ Geometry/Material Root files XYZ CHEP06

  13. CBM 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 CHEP06

  14. 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 CHEP06

  15. 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 CHEP06

  16. class CbmParGenericSet : public CbmParSet { public: CbmParGenericSet(const char* name,const char* title,const char* context) : CbmParSet(name,title,context) {} virtual ~CbmParGenericSet() {} virtual Bool_t init(CbmParIo*); virtual Int_t write(CbmParIo*); virtual void putParams(CbmParamList*)=0; virtual Bool_t getParams(CbmParamList*)=0; virtual void printParams(); Example: CbmGenericParSet Base class for most parameter containers Advantage: only a few lines of code to be implemented all I/O interfaces exist already Allows to store various types of parameters (handled by CbmParamList): int, float, double, strings,… arrays TObjects (classes, histograms, …) in derived class implemented CHEP06

  17. class CbmParTest : public CbmParGenericSet { public: Float_t p1; Int_t ai[5000]; TH1F* histo1; CbmParTest(const char* name="CbmParTest", const char* title="Test class for parameter io", const char* context="TestDefaultContext"); ~CbmParTest(void); void clear(void); void putParams(CbmParamList*); Bool_t getParams(CbmParamList*); ClassDef(CbmParTest,1) }; Example: Parameter Class definition CHEP06

  18. CbmParTest::CbmParTest(const char* name,const char* title,const char* context) : CbmParGenericSet(name,title,context) { clear(); histo1=new TH1F("h1","test histogram",100,-3,3); histo1->SetDirectory(0); } void CbmParTest::putParams(CbmParamList* l) { if (!l) return; l->add("p1",p1); l->addBinary("ai",ai,5000); l->addBinary("histo1",histo1); } Bool_t CbmParTest::getParams(CbmParamList* l) { if (!l) return kFALSE; if (!l->fill("p1",&p1)) return kFALSE; if (!l->fillBinary("ai",ai,5000)) return kFALSE; if (!l->fillBinary("histo1",histo1)) return kFALSE; histo1->SetDirectory(0); return kTRUE; } Example: Parameter Class Implementation CHEP06

  19. gSystem->Load ( "libOra" ); CbmRunAna * fRun = new CbmRunAna(); CbmRuntimeDb* rtdb=fRun->GetRuntimeDb(); CbmParOraIo* ora=new CbmParOraIo(); ora->open(); rtdb->setFirstInput(ora); CbmGenericParOraIo* genio= (CbmGenericParOraIo*)(ora->getDetParIo("CbmGenericParIo")); CbmParTest* par=(CbmParTest*)(rtdb->getContainer("CbmParTest")); genio->readFromLoadingTable(par,RunId); par->print(); Reading Parameters: Oracle CHEP06

  20. gSystem->Load ( "libOra" ); CbmRuntimeDb* rtdb=fRun->GetRuntimeDb(); CbmParOraIo* ora=new CbmParOraIo; ora->open("cbm_sts_oper"); rtdb->setOutput(ora); CbmParTest* par=(CbmParTest*)(rtdb->getContainer("CbmParTest")); par->setAuthor("M. Al-Turany"); par->setDescription("Analysis interface test"); par->write(ora); Writing Parameters to Oracle CHEP06

  21. // Init Simulation Parameters from Root File CbmRuntimeDb* rtdb=fRun->GetRuntimeDb(); CbmParRootFileIo* input=new CbmParRootFileIo(); input->open("parfiles/testparams.root"); // Init Digitization Parameters from Ascii File CbmParAsciiFileIo* input2 = new CbmParAsciiFileIo(); input2->open("sts_digi.par"); // set the different input to the runtime database rtdb->setFirstInput(input); rtdb->setSecondInput(input2); Reading Parameters using ROOT/ASCII files CHEP06

  22. Simulation Macro – loading Libs // Load basic libraries gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); basiclibs(); // Load Cbmroot libraries gSystem->Load("libGeoBase"); gSystem->Load("libCbm"); gSystem->Load("libPassive"); gSystem->Load("libGen"); gSystem->Load("libSts"); gSystem->Load("libTrd"); gSystem->Load("libTof"); gSystem->Load("libRich"); Base Libs Cbm Spec. Libs CHEP06

  23. //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"); Simulation Macro CHEP06

  24. 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); Simulation Macro- Create Modules CHEP06

  25. 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); Simulation Macro- Create Detectors CHEP06

  26. 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); Simulation Macro-Event Generators CHEP06

  27. // 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); Simulation Macro-Magnetic Field CHEP06

  28. 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 Simulation Macro- Run Simulation CHEP06

  29. CBM Detector Geometry CHEP06

  30. URQMD central Au+Au, 35 AGeV Simulation: Rich Detector CHEP06

  31. { 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"); Analysis Macro CHEP06

  32. 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); } Algorithms : CBMTask CHEP06

  33. 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) CHEP06

  34. Tasks CHEP06

  35. 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() CHEP06

  36. Make use of our CbmRootManager (IO): When the TChain switch to new file: Clear the global list of friends Add the correct next friend to the list Update the corresponding pointers (TTree, Friend Tree ..) Combining Chain with Friend: { //… CbmRun *fRun = new CbmRun(); fRun->SetInputFile(“rich_hit1.root”); fRun->AddFriend(“Rguidance1.root”); fRun->AddFile(“rich_hit2.root”); fRun->AddFriend(“Rguidance2.root”); //… fRun->Init(); fRun->Run(); … } Combined Chain& Friend CHEP06

  37. Analysis: π0e+e- CHEP06

  38. In the Simulation macro add: ......... fRun->SetStoreTraj(kTRUE); fRun->Init(); // Set cuts for storing the trajectories CbmTrajFilter* trajFilter = CbmTrajFilter::Instance(); trajFilter->SetStepSizeCut(1); // 1 cm trajFilter->SetEnergyCut(0., 1.04); // 0 < Etot < 1.04 GeV trajFilter->SetStorePrimaries(kFALSE); ......... Track Visualization CHEP06

  39. { 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"); } Example: Visualization macro CHEP06

  40. Track Visualization CHEP06

  41. Track Visualization CHEP06

  42. Hades@GSI • Goal: Study of in-medium modifications (r, w, j) properties • Produced in A+A, p+A, p+A collisions • Di-electrons are used as probes: Ve+e- • Hexagonal symmetry around the beam axis • Geometrical acceptance of 40% • Invariant mass resolution of 1% • Operates at reaction rates up to 106 /s 0.5 - 1 Tbyte/year • ~ 70.000 readout channels Tof Coils MDC 1,2 Rich MDC 3 Shower MDC 4 CHEP06

  43. Need to simulate heavy system at High energy Need external stack for Geant3: internal stack capacity reached) Check data with geant4 Easy reuse of CBM framework services Hades example • Interesting case ! • Gives us the opportunity to tune Geant4 (cuts/physics list …) • and compare with real Data ! • Realistic test of the framework CHEP06

  44. Hades Simulation CHEP06

  45. Hades geometry in Geant4 CHEP06

  46. HADES: MDC Hit distribution Geant3 Geant4 Cross-check with Hades data to be done ! CHEP06

  47. CBM:KO electrons production in the Au target (setup in the air or in vacuum B=1T) Geant3 Geant4 7.9 e/HI @ B=1T CHEP06

  48. CbmRoot@GF+E Gesellschaft für Forschungs- und Entwicklungsservice mbH (Gamma detector development for cancer therapy project at the GSI ) CHEP06

  49. A VMC based framework for CBM has been implemented First released in March 2004 Work on digitizers and full tracking is going on. Oct 04 release was used to produce data for the CBM technical report Packages ( ROOT 4.01/02 , GEANT3) June 05 release ( initialization scheme added ) Packages ( ROOT 5.02, GEANT3 ) January 2006 : Integration of GCalor to VMC Integration of Fluka Simulation engine Summary CHEP06

  50. Tested on Red Hat 9.0 (gcc 3.2.2 and icc 8.1) Suse 9.0 (gcc 3.3.1) Debian (gcc 3.2.3) Fedora Core 2 (gcc 3.3.3) Fedora Core 4 (gcc 4.0 ) AMD Opteron ( 64 bit architecture) Binaries are also available for these platforms Availability CHEP06

More Related