SetTRIG(1); //Number of events to be processed geant3->SetSWIT(4, 10); geant3->SetDEBU(0, 0, 1); geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0) geant3->SetABAN(0); //Restore behaviour for abandoned tracks …"> SetTRIG(1); //Number of events to be processed geant3->SetSWIT(4, 10); geant3->SetDEBU(0, 0, 1); geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0) geant3->SetABAN(0); //Restore behaviour for abandoned tracks …">

Presentation is loading. Please wait.

Presentation is loading. Please wait.

10.05.2004CBM Software Meeting 1 CBM Simulation & Analysis Framework Geant3 / Gean4 configuration M. Al-Turany, D. Bertini.

Similar presentations


Presentation on theme: "10.05.2004CBM Software Meeting 1 CBM Simulation & Analysis Framework Geant3 / Gean4 configuration M. Al-Turany, D. Bertini."— Presentation transcript:

1 10.05.2004CBM Software Meeting 1 CBM Simulation & Analysis Framework Geant3 / Gean4 configuration M. Al-Turany, D. Bertini

2 10.05.2004CBM Software Meeting 2 Simulation Run configuration MC configuration is user defined and done via ROOT macro Geant3 Config Macro: – /macro/run/g3Config.C –Control of the physical process Full Access to Geant 3 common blocks: – /GCPHYS/ – /GCUTS/ – /GCKING/ Geant4 Config Macro – /macro/run/g4Config.C –Definition of physic list ( + intrinsic cuts ) –Definition of user defined Geant4 “actions”

3 10.05.2004CBM Software Meeting 3 g3Config.C void Config() { TGeant3* geant3 = new TGeant3("C++ Interface to Geant3"); cout << "Geant3 has been created." << endl; // ******* GEANT3 configuration for simulated Runs ******* geant3->SetTRIG(1); //Number of events to be processed geant3->SetSWIT(4, 10); geant3->SetDEBU(0, 0, 1); geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0) geant3->SetABAN(0); //Restore behaviour for abandoned tracks …

4 10.05.2004CBM Software Meeting 4 Physical processes Direct pair production, Bremsstrahlung and muon nuclear interaction geant3->SetPAIR(1); geant3->SetBREM(1); geant3->SetMUNU(1); Multiple scattering is switched on with the following line: geant3->SetMULS(1); and can be switched of for test purposes: geant3->SetMULS(0); With the following line we chose energy loss with restricted fluctuations and delta-electron production above a threshold. geant3->SetLOSS(1); geant3->SetDRAY(1); For test runs you might want to use full Landau fluctuations without delta- ray production: geant3->SetLOSS(2); Or no fluctuations at all: geant3->SetLOSS(4 );

5 10.05.2004CBM Software Meeting 5 Physical processes For background simulations it is important to simulate all photon interactions: geant3->SetCOMP(1); geant3->SetPHOT(1); geant3->SetPAIR(1); and processes producing photons: geant3->SetANNI(1); If Decays of the vector mesons are performed at the generator level through an interface (PYTHIA/JETSET) it is then important to switch on particle decays by GEANT: geant3->SetDCAY(1); For the simulation of hadronic showers you can chose between: geant3->SetHADR(1); //Select pure GEANH geant3->SetHADR(3); // GEANH/NUCRIN geant3->SetHADR(4); // FLUKA interface

6 10.05.2004CBM Software Meeting 6 Kinetic Cuts The kinetic energy cuts for the various particle types are specified in the following line: Float_t cut = 1.e-3; // 1 MeV cut by default Float_t tofmax = 1.e10; // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDE MUPA TOFMAX geant3->SetCUTS(cut, cut, cut, cut, cut, cut, cut, cut, cut, 2.1e-3, tofmax);

7 10.05.2004CBM Software Meeting 7 g4Config.C void Config() { // RunConfiguration for Geant4 (std VMC) // TG4RunConfiguration* runConfiguration // = new TG4RunConfiguration(); CBMRunConfiguration* runConfiguration = new CBMRunConfiguration(); cout << "Geant4 has been created. 1 " << endl; // TGeant4 instance TGeant4* geant4 = new TGeant4("TGeant4", "The Geant4 Monte Carlo", runConfiguration); // Customise Geant4 setting // (verbose level, global range cut,..) geant4->ProcessGeantMacro("g4config.in"); }

8 10.05.2004CBM Software Meeting 8 g4Config.in # Geant4 configuration macro for g4 # (called from Root macro Config.C) #/process/eLoss/subsec false #/process/eLoss/minsubsec 2 cm # switch on/off B field /mcDet/fieldType None # Store or don't store secondaries /mcTracking/saveSecondaries true # use debug/verbosity mode /mcVerbose/all 1 /mcVerbose/physicsList 2 /tracking/verbose 2

9 10.05.2004CBM Software Meeting 9 Physical Processes # Special setting for the different physic list #Special cuts “a la Geant3” /mcPhysics/setSpecialCuts false mcPhysics/printGeneralCuts true #Switch on off physic list /mcPhysics/setEM true /mcPhysics/setMuon true /mcPhysics/setHadron false /mcPhysics/setOptical false # cut in range ( 1 mm) /mcPhysics/rangeCut 1. /run/particle/dumpCutValues

10 10.05.2004CBM Software Meeting 10 G4 Config via compiled code CBMRunConfiguration class –Creates the mandatory Geant4 physic classes and the other user action classes. –void CBMRunConfiguration::CreateUserConfiguration() –Gives user access to Stacking mechanism Can use the new Geant4 Packaging Physic Lists –Recommended compare to using physic list from Example N04/N06 –Provide different models for hadronic interaction User can choose in the Educated Guess Physics Lists for Geant4 HADronic Physics : http://cmsdoc.cern.ch/~hpw/GHAD/HomePage/

11 10.05.2004CBM Software Meeting 11 G4 Config via CBMRunConfiguration void CBMRunConfiguration::CreateUserConfiguration() { // create mandatory Geant4 classes fDetectorConstruction = new TG4DetConstruction(); fSDConstruction = new TG4SDConstruction(); fPhysicsList = new TG4ModularPhysicsList(); fPrimaryGenerator = new TG4PrimaryGeneratorAction(); // create the other user action classes fRunAction = new TG4RunAction(); fEventAction = new TG4EventAction(); fTrackingAction = new TG4TrackingAction(); fSteppingAction = new TG4SteppingAction(); fStackingAction = new CBMSpecialStackingAction(); …. }

12 10.05.2004CBM Software Meeting 12 G4 Config via CBMRunConfiguration void CBMRunConfiguration::CreateUserConfiguration() { … TG4ModularPhysicsList* tg4fPhysicsList = dynamic_cast (fPhysicsList); // take User physic definition tg4fPhysicsList->SetDefaultCutValue(0.1*mm); G4double mycut = 0.1*mm; tg4fPhysicsList->SetRangeCut(mycut); tg4fPhysicsList->SetVerboseLevel(6); // Register user defined physics constructor tg4fPhysicsList->RegisterPhysics( new GeneralPhysics("general")); // General Physics tg4fPhysicsList->RegisterPhysics( new EMPhysics("standard EM")); // EM Physics tg4fPhysicsList->RegisterPhysics( new MuonPhysics("muon")); // Muon Physics tg4fPhysicsList->RegisterPhysics( new HadronPhysicsQGSP("hadron")); // Hadron Physics tg4fPhysicsList->RegisterPhysics( new IonPhysics("ion")); // Ion Physics

13 10.05.2004CBM Software Meeting 13 CBMStackingAction G4ClassificationOfNewTrack CBMSpecialStackingAction::ClassifyNewTrack ( const G4Track * track ) {// Classifies the new track. // --- G4ClassificationOfNewTrack classification; G4int parentID = track->GetParentID(); if (parentID ==0) return fUrgent; else{ // exclude secondary neutrinos G4ParticleDefinition* particle = track->GetDefinition(); if( particle == G4NeutrinoE::NeutrinoEDefinition() || particle == G4NeutrinoMu::NeutrinoMuDefinition() || particle == G4NeutrinoTau::NeutrinoTauDefinition() || particle == G4AntiNeutrinoE::AntiNeutrinoEDefinition() || particle == G4AntiNeutrinoMu::AntiNeutrinoMuDefinition() || particle == G4AntiNeutrinoTau::AntiNeutrinoTauDefinition()) { return fKill; } return fWaiting; } … return classification; }

14 10.05.2004CBM Software Meeting 14 CBM Simulation & Analysis Framework Merging Transported Event M. Al-Turany, D. Bertini

15 10.05.2004CBM Software Meeting 15 Creating bkg+signal Run_all.C STS UrQmD Gen UrQmD Input File STSPoints Bkg.root TParticle TTree Run_all.C STS AscII Gen ASCII Input File D0 signal STSPoints SigD0.root TParticle TTree

16 10.05.2004CBM Software Meeting 16 Merging at MCPoint level STSPoints Bkg.root TParticle TTree STSPoints SigD0.root TParticle TTree STSPoints Bkg+SigD0.root TParticle TTree Merging Reindexing/evts of arrays needed CBMStack CBMSTSPoints

17 10.05.2004CBM Software Meeting 17 CBMROOTManager Method to store TObject Register(name,folder,TObject* obj) Register(name,folder,TCollection* obj) Input Data Manipulation AddFriend( ) AddAndMerge() CBMRootManager Provide service for merging: –AddAndMerge(TFile *f); –isMerging => kTRUE Modify Event loop –Reading an Event calls Reindexation and merging of Particle Stack information from different CBMApplication Reindexation and merging of all TClonesArray at the MCPoint level for all Detectors stored in the CBMApplication Dispatch calls to the different CBMDetector::CopyClones(…) implementation Method to access Data From file: ActivateBranch( brname) From Memory: GetMergedObject( brname)

18 10.05.2004CBM Software Meeting 18 Virtual CBMDetector::CopyClones void CBMTracker::CopyClones ( TClonesArray *cl_orig, TClonesArray* cl_merged, Int_t offset ){ Int_t entries = cl_orig->GetEntriesFast(); TClonesArray &clRef = *cl_merged; CBMSTSPoint *pts = NULL; // Reindex and add pointer to merged TClonesArray for (Int_t i=0;i< entries ; i++ ) { pts = (CBMSTSPoint *) cl_orig->At(i); Int_t index = pts->GetTrackID() + offset; pts->SetTrackID( index ); CBMSTSPoint* pt = new (clRef[pos] ) CBMSTSPoint( *pts ); pos++; }

19 10.05.2004CBM Software Meeting 19 Macro for merging // Load Libraries gROOT->LoadMacro("../basiclibs.C"); basiclibs(); gSystem->Load("libCbm"); gSystem->Load("libITrack"); CBMRun *fRun= new CBMRun(); fRun->SetInputFile("background_g3.root"); // merge now inputs at the MC Points fRun->AddAndMerge("signal_g3.root"); fRun->AddAndMerge("background_g3.root"); fRun->SetOutputFile("cbmout.root"); CBMITrack *it= new CBMITrack ("ITrack"); fRun->AddTask(it); fRun->LoadGeometry(); fRun->Init(); fRun->Run(3);


Download ppt "10.05.2004CBM Software Meeting 1 CBM Simulation & Analysis Framework Geant3 / Gean4 configuration M. Al-Turany, D. Bertini."

Similar presentations


Ads by Google