CBM Simulation&Analysis Framework Cbmroot

43
CBM Simulation&Analysis Framework CBM Simulation&Analysis Framework Cbmroot Cbmroot Mohammad Al-Turany & Denis Bertini

description

CBM Simulation&Analysis Framework Cbmroot. Mohammad Al-Turany & Denis Bertini. The same framework can be used for Simulation and Analysis Fully ROOT based: VMC for simulation Geometry Modeller (TGeoManager) for geometry definition - PowerPoint PPT Presentation

Transcript of CBM Simulation&Analysis Framework Cbmroot

Page 1: CBM Simulation&Analysis Framework Cbmroot

CBM Simulation&Analysis FrameworkCBM Simulation&Analysis FrameworkCbmroot Cbmroot

Mohammad Al-Turany & Denis Bertini

Page 2: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 2

CBM Framework: FeaturesCBM Framework: Features

• The same framework can be used for Simulation and Analysis

• Fully ROOT based:– VMC for simulation – Geometry Modeller (TGeoManager) for geometry definition– IO scheme (TChain, friend TTrees, TFolders ) for persistency– TTask to organize analysis data flow

• Improved ROOT IO: Combined Chaining & Friend mechanism

• Completely configurable via ROOT macros

• Reuse of HADES Geometry Interface.

• Reuse of HADES Parameter containers.

• Easy to maintain (only ROOT standard services are used)

• Event merging before and/or after transport

Page 3: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 3

CBMROOT is based on The CBMROOT is based on The Virtual Monte Carlo (VMC)Virtual Monte Carlo (VMC)

User Code

VMC

Virtual Geometrical

Modeller

G3 G3 transport

G4 transportG4

FLUKA transportFLUKA

Geometrical Modeller

Reconstruction

Visualisation

Page 4: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 4

ROOT

Run Manager

Virtual MC

Geant3

Geant4

FLUKA

Pluto

Particle Generator

ASCII

PIPE

Target

STS

TRD

Cave

TOF

Magnet

RICH

EVGEN

Primary Generator

UrqmdMagneti

c Field

Module

Detector

GeometryManager

IO Manager

Tasks

Delta Tracking

Field Map

CBM Analysis and Simulation FrameworkCBM Analysis and Simulation Framework

digitizers

GeoInterface

ECAL

Page 5: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 5

ROOT

Run Manager

Virtual MC

EVGEN

Primary Generator

Magnetic

Field

Module

Detector

GeometryManager

IO Manager

Tasks

Delta Tracking

CBM Analysis and Simulation FrameworkCBM Analysis and Simulation Framework

digitizers

GeoInterface

ROOT FILESInput: MC Points, ConfigurationOutput: Hits, Digits, Tracks

Page 6: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 6

HYDRA Geometry Interface, why ?HYDRA Geometry Interface, why ?

• Use the copy mechanism – reduce the size of ASCII files– Reduce the number of Volumes in Geant– Improve Geant tracking performance

• Oracle interface – Hades geometry table design reusable

Page 7: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 7

Advantage:• more flexibility : different inputs can be used.• closer to technical drawings and analysis coordinate

systems

Disadvantage • more points than really needed for the basic shapes

HYDRA Geometry Interface, why ?HYDRA Geometry Interface, why ?

Page 8: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 8

Material & Geometry InterfaceMaterial & Geometry Interface

Geometry/Material CBM Geometry TGeoManager

input Builder Interface

OracleDB

ASCII

CbmGeoInterfaceCbmGeoRootBuilder

CBM Geometry/MaterialTGeoVolumeTGeoNode

TGeoMaterial

ROOT

Page 9: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 9

Full Simulation-Analysis ChainFull 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

Calculate physics observables

Storage

Levels

SIM

RAW

Page 10: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 10

Event merging before transportEvent merging before transport

Event Generator 1

Transport

Digitizer

Hit Finder

Reconstruction

Physics Analysis

Event Generator 2

Merger

Pluto UrQMD

Page 11: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 11

Event Generator 1

Transport

Digitizer

Hit Finder

Reconstruction

Physics Analysis

Event Generator 2

Transport

Merger

Pluto UrQMD

Storage at SIM level is more efficient when digitizers are fast

compared to transport

Event merging after transportEvent merging after transport

Page 12: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 12

Tasks and interfacesTasks and interfaces

Digitizer

Hit Finder

Reconstruction

Merger

MC POINTSIM

RAW

MC POINT

MC POINT

DIGIT

HIT

TRACK

Storage

Levels

Data ObjectsData Objects

TasksTasks

Input of a taskis from storageor other task

Page 13: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 13

Adding a detector or a Module ?Adding a detector or a Module ?

• Material definitions • Geometry definitions • Create a detector (or Module) subclass• Create the library

Page 14: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 14

Simulation MacroSimulation Macro

• Load the Libraries• Create the Run Manager • Choose Simulation engine • Choose an output file name• Create Modules and detectors and add them to the Run

Manager• Create and Set the Event generator(s)• Create and set the Magnetic field • Initialize and run the simulation

Page 15: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 15

Simulation Macro – loading LibsSimulation Macro – loading Libs

// Load basic libraries

gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");

basiclibs();

// Load Cbmroot libraries

gSystem->Load("libCbm");

gSystem->Load("libPassive");

gSystem->Load("libGen");

gSystem->Load("libSts");

gSystem->Load("libTrd");

gSystem->Load("libTof");

gSystem->Load("libRich");

Page 16: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 16

Simulation MacroSimulation Macro

//create the Run Class

CBMRun *fRun = new CBMRun();

// set the MC version used

fRun->SetName("TGeant4"); //for G3 use "TGeant3"

// chose an output file name

fRun->SetOutputFile("test.root");

Page 17: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 17

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);

Page 18: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 18

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);

Page 19: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 19

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);

Page 20: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 20

Simulation Macro-Magnetic FieldSimulation Macro-Magnetic Field

// setting a field map

CbmFieldMap *fMagField= new CbmFieldMap("FIELD.v03b.map");

// 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);

Page 21: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 21

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

Page 22: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 22

CBM Detector GeometryCBM Detector Geometry

Page 23: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 23

Example: Rich DetectorExample: Rich Detector

Page 24: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 24

CbmTaskCbmTask

• Tasks can be organized into a hierarchy and displayed in the browser.

• The CbmTask class is the base class from which the tasks are derived.

• To give task functionality, you need to subclass the CbmTask class and override:– Init(); //Initialization

– Exec(Option_t * option);

Page 25: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 25

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

Page 26: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 26

CbmTasksCbmTasks

Page 27: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 27

Analysis : creating a TaskAnalysis : creating a Task

class CbmITrack : public CbmTask {

public:

CbmDITrack(const char *name, const char *title="CBM Task");

virtual void Init(); //Initialization

virtual void Exec(Option_t * option); //called for each event

virtual void Finish(); //called for each event

virtual ~CbmITrack();

ClassDef(CbmITrack,1) //CbmITrack

}

Page 28: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 28

Analysis Task- Init exampleAnalysis Task- Init example

void CbmITrack::Init()

{

// Get a pointer to the ROOT Manager ( data store )

CbmRootManager *fManager =CbmRootManager::Instance();

// Get the relevant data for the Task

// activate in IO the corresponding TTree branch

fListSTSpts=(TClonesArray *)fManager->ActivateBranch("STSPoint");

//Create a new branch in the output file for the results

fHitCollection = new TClonesArray("CBMSTSDoubleHit");

fManager->Register("STSDoubleHit","STS", fHitCollection);

}

Page 29: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 29

Analysis Task- Exec exampleAnalysis Task- Exec examplevoid CBMITrack::Exec(Option_t * option) {

CBMSTSDoublePoint *pt=NULL; CBMSTSDoubleHit *hit=NULL; for (int j=0; j < fListSTSpts->GetEntries(); j++ ) {

pt = (CBMSTSDoublePoint*) fListSTSpts->At(j); if (pt && ( pt->GetDetectorID(0) == pt->GetDetectorID(1)) ) {

hit =AddHit(); hit->SetDetectorID( pt->GetDetectorID(1)); } else continue; hit->SetPos_in( pt->GetPos_in() ); hit->SetPos_out( pt->GetPos_out() ); TVector3 xy(gRandom->Gaus(0,fDx), gRandom->Gaus(0,fDy),0.0); hit->SetDPos_in( xy ); hit->SetDPos_out( xy );

} }

Page 30: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 30

Analysis MacroAnalysis Macro{

gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");

basiclibs();

gSystem->Load("libCbm");

gSystem->Load("libITrack");

CBMRun *fRun= new CBMRun();

fRun->SetInputFile(“/d/STS_AuAu25Gev_Urqmd.root");

fRun->SetOutputFile(“trackOutput.root");

CBMITrack *tr= new CBMITrack("Tracking Algorithm");

fRun->AddTask(tr);

fRun->Init();

fRun->Run();

}

Page 31: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 31

Chaining root files Chaining root files

• Chaining mechanism supported in the Analysis: { // …

CbmRun *fRun = new CbmRun(); fRun->SetInputFile(“myfile1.root”); fRun->AddFile(“myfile2.root”); fRun->AddFile(“myfile3.root”);

// loop over all entries fRun->Run();

}

Page 32: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 32

Combined Chain & Friend (ROOT)Combined Chain & Friend (ROOT)

• ROOT IO problem:

{ // …

TChain ch(“cbmsim”);

ch.Add(“rich_hit1.root”);

ch.Add(“rich_hit2.root”);

TFile f1(“Rguidance1.root”);

TFile f2(“Rguidance2.root”);

ch.AddFriend(“cbmsim”, &f1);

ch.AddFriend(“cbmsim”, &f2);

// …

Does NOT Work !!

Page 33: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 33

Combined Chain& Friend (CbmRoot)Combined Chain& Friend (CbmRoot)

• 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 ..)

• Problem is solved : { //… 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();

… }

Page 34: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 34

Track Visualization Track Visualization

• 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);

.........

Page 35: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 35

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");

}

Page 36: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 36

Track VisualizationTrack Visualization

Page 37: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 37

Track VisualizationTrack Visualization

Page 38: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 38

Code Convention Code Convention

• CodeWizard is being used as automatic rule checker• Will be integrated with “cvs commit”

Page 39: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 39

Hades Simulation using Cbmroot, Hades Simulation using Cbmroot, why? why?

• Need to simulate heavy system at High energy – Need external stack for Geant3: internal stack capacity reached– Check data with geant4

• Easy to use CBM framework services

• The Only efforts:– Definition of Detector MC point container– Field map reader– Conversion from Lab. MC point definition to points defined in the local

ref. Frame of the sensitive volume – Modification of some particles physical characteristics:

• Use of TVirtualMC::Gspart()

Page 40: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 40

ROOT

Run Manager

Virtual MC

Geant3

Geant4

FLUKA

Pluto

Particle Generator

ASCII

PIPE

Target

MDC

TOF/TOFINO

Cave

SHOWER

Magnet

RICH

EVGEN

Primary Generator

UrqmdMagneti

c Field

Module

Detector

GeometryManager

IO Manager

Tasks

Field Map

Hades SimulationHades Simulation

GeoInterface

Page 41: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 41

Hades SimulationHades Simulation

Page 42: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 42

SummarySummary

• A VMC based framework for CBM has been implemented – First released in March 2004– Work on digitizers and full tracking is going on.

• OCT04 release of Cbmroot was used to produce data for the progress report – Packages ( ROOT 4.01/02 , GEANT3/GEANT4.6.2 )

• 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)

• Binaries are also available for these platforms

Page 43: CBM Simulation&Analysis Framework Cbmroot

16.11.2004 M. Al-Turany, DVEE Palaver 43

SummarySummary

• Hades spectrometer has been fully integrated – Gives us the opportunity to tune Geant4 (cuts/physics list …)

to real Data !– Realistic test of the framework.

• FLUKA simulation will be also possible with no efforts !

• CBM Convention rules will be forced via CodeWizard very soon

• HADES Parameter containers are implemented and ready to use

• The Hades Oracle interface is already available and will be integrated within the next months