19#include <TGeoManager.h>
20#include <TGeoUniformMagField.h>
21#include <TInterpreter.h>
24#include <TParticlePDG.h>
28#include <TVirtualGeoTrack.h>
29#include <TVirtualMC.h>
31#include <TMCRootManager.h>
41#include "Ex03MCStack.h"
215 if (TString(setup) !=
"") {
216 gROOT->LoadMacro(setup);
217 gInterpreter->ProcessLine(
"Config()");
220 "InitMC",
"Processing Config() has failed. (No MC is instantiated.)");
225#if ROOT_VERSION_CODE >= 336402
228 fRootManager =
new TMCRootManager(GetName(), TMCRootManager::kWrite);
233 fRootManager =
new TMCRootManager(GetName(), TMCRootManager::kWrite);
256 gMC->ProcessRun(nofEvents);
286 Int_t threadRank = 1;
288 fRootManager =
new TMCRootManager(GetName(), TMCRootManager::kWrite, threadRank);
315 fRootManager =
new TMCRootManager(GetName(), TMCRootManager::kRead);
345 if (TString(gMC->GetName()) ==
"TGeant3TGeo")
SetCuts();
388 if (TString(gMC->GetName()) ==
"TGeant3TGeo" &&
389 gGeoManager->GetListOfTracks() && gGeoManager->GetTrack(0) &&
390 ((TVirtualGeoTrack*)gGeoManager->GetTrack(0))->HasPoints()) {
392 gGeoManager->ClearTracks();
452 if (TString(gMC->GetName()) ==
"TGeant3TGeo") {
455 gGeoManager->SetVisOption(0);
456 gGeoManager->SetTopVisible();
457 gGeoManager->GetTopVolume()->Draw();
462 if (gGeoManager->GetListOfTracks() && gGeoManager->GetTrack(0) &&
463 ((TVirtualGeoTrack*)gGeoManager->GetTrack(0))->HasPoints()) {
465 gGeoManager->DrawTracks(
"/*");
474 TParticle* primary =
fStack->GetParticle(0);
476 <<
">>> Event " << gMC->CurrentEvent()
477 <<
" >>> Simulation truth : " << primary->GetPDG()->GetName() <<
" ("
478 << primary->Px() * 1e03 <<
", " << primary->Py() * 1e03 <<
", "
479 << primary->Pz() * 1e03 <<
") MeV" << endl;
527 Int_t mediumId = gMC->MediumId(
"Air");
529 gMC->Gstpar(mediumId,
"CUTGAM", 990.e-09);
530 gMC->Gstpar(mediumId,
"BCUTE", 990.e-09);
531 gMC->Gstpar(mediumId,
"CUTELE", 990.e-09);
532 gMC->Gstpar(mediumId,
"DCUTE", 990.e-09);
535 mediumId = gMC->MediumId(
"G4_Galactic");
537 gMC->Gstpar(mediumId,
"CUTGAM", 990.e-09);
538 gMC->Gstpar(mediumId,
"BCUTE", 990.e-09);
539 gMC->Gstpar(mediumId,
"CUTELE", 990.e-09);
540 gMC->Gstpar(mediumId,
"DCUTE", 990.e-09);
543 mediumId = gMC->MediumId(
"Scintillator");
545 gMC->Gstpar(mediumId,
"CUTGAM", 2.40367 - 06);
546 gMC->Gstpar(mediumId,
"BCUTE", 356.639e-06);
547 gMC->Gstpar(mediumId,
"CUTELE", 356.639e-06);
548 gMC->Gstpar(mediumId,
"DCUTE", 356.639e-06);
551 mediumId = gMC->MediumId(
"ArgonGas");
553 gMC->Gstpar(mediumId,
"CUTGAM", 990.e-09);
554 gMC->Gstpar(mediumId,
"BCUTE", 990.e-09);
555 gMC->Gstpar(mediumId,
"CUTELE", 990.e-09);
556 gMC->Gstpar(mediumId,
"DCUTE", 990.e-09);
559 mediumId = gMC->MediumId(
"CsI");
561 gMC->Gstpar(mediumId,
"CUTGAM", 38.5665e-06);
562 gMC->Gstpar(mediumId,
"BCUTE", 689.033e-06);
563 gMC->Gstpar(mediumId,
"CUTELE", 689.033e-06);
564 gMC->Gstpar(mediumId,
"DCUTE", 689.033e-06);
567 mediumId = gMC->MediumId(
"Lead");
569 gMC->Gstpar(mediumId,
"CUTGAM", 101.843e-06);
570 gMC->Gstpar(mediumId,
"BCUTE", 1.36749e-03);
571 gMC->Gstpar(mediumId,
"CUTELE", 1.36749e-03);
572 gMC->Gstpar(mediumId,
"DCUTE", 1.36749e-03);
Definition of the A01DriftChamberSD class.
Definition of the A01EmCalorimeterSD class.
Definition of the A01HadCalorimeterSD class.
Definition of the A01HodoscopeSD class.
Definition of the A01MCApplication class.
Definition of the A01MagField class.
Definition of the A01PrimaryGenerator class.
Definition of the A01RootDetectorConstruction class.
The calorimeter sensitive detector.
The EM calorimeter sensitive detector.
The hadron calorimeter sensitive detector.
The calorimeter sensitive detector.
Implementation of the TVirtualMCApplication.
void SetWriteHits(Bool_t writeHits)
void RunMC(Int_t nofEvents)
A01HodoscopeSD * fHodoscopeSD2
Hodoscope 2 SD.
A01MagField * fMagField
Magnetic field.
virtual void GeneratePrimaries()
A01DriftChamberSD * fDriftChamberSD1
Drift Chamber 1 SD.
virtual void BeginPrimary()
Bool_t fIsMaster
If is on master thread.
A01RootDetectorConstruction * fDetConstruction
Detector construction.
virtual void AddParticles()
virtual ~A01MCApplication()
virtual void FinishRunOnWorker()
virtual void ConstructGeometry()
virtual void FinishEvent()
virtual void FinishPrimary()
A01DriftChamberSD * fDriftChamberSD2
Drift Chamber 2 SD.
void InitMC(const char *setup)
virtual void InitGeometry()
TMCVerbose fVerbose
VMC verbose helper.
A01HadCalorimeterSD * fHadCalorimeterSD
Had Calorimeter SD.
Bool_t fWriteStack
Option to write stack.
Bool_t fUseLocalMagField
Option to use local magnetic field (working only with Geant4 !).
Ex03MCStack * fStack
VMC stack.
virtual void BeginEvent()
A01PrimaryGenerator * fPrimaryGenerator
Primary generator.
A01MCApplication(const char *name, const char *title)
void SetUseLocalMagField(Bool_t localMagField)
virtual void InitOnWorker()
virtual TVirtualMCApplication * CloneForWorker() const
TMCRootManager * fRootManager
Root manager.
void RegisterStack() const
A01EmCalorimeterSD * fEmCalorimeterSD
Em Calorimeter SD.
A01HodoscopeSD * fHodoscopeSD1
Hodoscope 1 SD.
Definition of a uniform magnetic field within a given region.
The detector construction (via TGeo ).
Implementation of the TVirtualMCStack interface.