ROOT  6.06/09
Reference Guide
TVirtualMC.cxx
Go to the documentation of this file.
1 // @(#)root/vmc:$Id$
2 // Authors: Ivana Hrivnacova, Rene Brun , Federico Carminati 13/04/2002
3 
4 /*************************************************************************
5  * Copyright (C) 2006, Rene Brun and Fons Rademakers. *
6  * Copyright (C) 2002, ALICE Experiment at CERN. *
7  * All rights reserved. *
8  * *
9  * For the licensing terms see $ROOTSYS/LICENSE. *
10  * For the list of contributors see $ROOTSYS/README/CREDITS. *
11  *************************************************************************/
12 
13 #include "TVirtualMC.h"
14 
15 //______________________________________________________________________________
16 // Virtual MC provides a virtual interface to Monte Carlo.
17 // It enables the user to build a virtual Monte Carlo application
18 // independent of any actual underlying Monte Carlo implementation itself.
19 //
20 // A user will have to implement a class derived from the abstract
21 // Monte Carlo application class, and provide functions like
22 // ConstructGeometry(), BeginEvent(), FinishEvent(), ... .
23 // The concrete Monte Carlo (Geant3, Geant4) is selected at run time -
24 // when processing a ROOT macro where the concrete Monte Carlo is instantiated.
25 //______________________________________________________________________________
26 
28 
30 
31 ////////////////////////////////////////////////////////////////////////////////
32 ///
33 /// Standard constructor
34 ///
35 
36 TVirtualMC::TVirtualMC(const char *name, const char *title,
37  Bool_t /*isRootGeometrySupported*/)
38  : TNamed(name,title),
39  fApplication(0),
40  fStack(0),
41  fDecayer(0),
42  fRandom(0),
43  fMagField(0)
44 {
45  if(fgMC) {
46  Warning("TVirtualMC","Cannot initialise twice MonteCarlo class");
47  } else {
48  fgMC=this;
49 
50  fApplication = TVirtualMCApplication::Instance();
51 
52  if (!fApplication) {
53  Error("TVirtualMC", "No user MC application is defined.");
54  }
55 
56  fRandom = gRandom;
57  }
58 }
59 
60 ////////////////////////////////////////////////////////////////////////////////
61 ///
62 /// Default constructor
63 ///
64 
66  : TNamed(),
67  fApplication(0),
68  fStack(0),
69  fDecayer(0),
70  fRandom(0),
71  fMagField(0)
72 {
73 }
74 
75 ////////////////////////////////////////////////////////////////////////////////
76 ///
77 /// Destructor
78 ///
79 
81 {
82  fgMC=0;
83 }
84 
85 //
86 // methods
87 //
88 
89 ////////////////////////////////////////////////////////////////////////////////
90 ///static: return virtual MC object
91 
93 {
94  return fgMC;
95 }
96 
97 ////////////////////////////////////////////////////////////////////////////////
98 ///
99 /// Set particles stack.
100 ///
101 
103 {
104  fStack = stack;
105 }
106 
107 ////////////////////////////////////////////////////////////////////////////////
108 ///
109 /// Set external decayer.
110 ///
111 
113 {
114  fDecayer = decayer;
115 }
116 
117 ////////////////////////////////////////////////////////////////////////////////
118 ///
119 /// Set random number generator.
120 ///
121 
123 {
124  gRandom = random;
125  fRandom = random;
126 }
127 
128 ////////////////////////////////////////////////////////////////////////////////
129 ///
130 /// Set magnetic field.
131 ///
132 
134 {
135  fMagField = field;
136 }
static TMCThreadLocal TVirtualMC * fgMC
Definition: TVirtualMC.h:867
bool Bool_t
Definition: RtypesCore.h:59
virtual ~TVirtualMC()
Destructor.
Definition: TVirtualMC.cxx:80
TVirtualMC()
Default constructor.
Definition: TVirtualMC.cxx:65
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:29
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:33
void Error(const char *location, const char *msgfmt,...)
void Warning(const char *location, const char *msgfmt,...)
R__EXTERN TRandom * gRandom
Definition: TRandom.h:62
#define TMCThreadLocal
Definition: TMCtls.h:59
virtual void SetMagField(TVirtualMagField *field)
Set magnetic field.
Definition: TVirtualMC.cxx:133
#define ClassImp(name)
Definition: Rtypes.h:279
virtual void SetRandom(TRandom *random)
Set random number generator.
Definition: TVirtualMC.cxx:122
virtual void SetExternalDecayer(TVirtualMCDecayer *decayer)
Set external decayer.
Definition: TVirtualMC.cxx:112
virtual void SetStack(TVirtualMCStack *stack)
Set particles stack.
Definition: TVirtualMC.cxx:102
static TVirtualMCApplication * Instance()
Static access method.
static TVirtualMC * GetMC()
static: return virtual MC object
Definition: TVirtualMC.cxx:92