ROOT  6.06/09
Reference Guide
TVirtualMCStack.h
Go to the documentation of this file.
1 // @(#)root/vmc:$Id$
2 // Authors: Ivana Hrivnacova 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 #ifndef ROOT_TVirtualMCStack
14 #define ROOT_TVirtualMCStack
15 
16 // Class TVirtualMCStack
17 // ---------------------
18 // Interface to a user defined particles stack.
19 //
20 
21 #include "TObject.h"
22 #include "TMCProcess.h"
23 
24 class TParticle;
25 
26 class TVirtualMCStack : public TObject {
27 
28 public:
29  // Constructor
31 
32  // Destructor
33  virtual ~TVirtualMCStack();
34 
35  //
36  // Methods for stacking
37  //
38 
39  // Create a new particle and push into stack;
40  // toBeDone - 1 if particles should go to tracking, 0 otherwise
41  // parent - number of the parent track, -1 if track is primary
42  // pdg - PDG encoding
43  // px, py, pz - particle momentum [GeV/c]
44  // e - total energy [GeV]
45  // vx, vy, vz - position [cm]
46  // tof - time of flight [s]
47  // polx, poly, polz - polarization
48  // mech - creator process VMC code
49  // ntr - track number (is filled by the stack
50  // weight - particle weight
51  // is - generation status code
52  virtual void PushTrack(Int_t toBeDone, Int_t parent, Int_t pdg,
53  Double_t px, Double_t py, Double_t pz, Double_t e,
54  Double_t vx, Double_t vy, Double_t vz, Double_t tof,
55  Double_t polx, Double_t poly, Double_t polz,
56  TMCProcess mech, Int_t& ntr, Double_t weight,
57  Int_t is) = 0;
58 
59  // The stack has to provide two pop mechanisms:
60  // The first pop mechanism required.
61  // Pop all particles with toBeDone = 1, both primaries and seconadies
62  virtual TParticle* PopNextTrack(Int_t& itrack) = 0;
63 
64  // The second pop mechanism required.
65  // Pop only primary particles with toBeDone = 1, stacking of secondaries
66  // is done by MC
67  virtual TParticle* PopPrimaryForTracking(Int_t i) = 0;
68 
69  //
70  // Set methods
71  //
72 
73  // Set the current track number
74  virtual void SetCurrentTrack(Int_t trackNumber) = 0;
75 
76  //
77  // Get methods
78  //
79 
80  // Total number of tracks
81  virtual Int_t GetNtrack() const = 0;
82 
83  // Total number of primary tracks
84  virtual Int_t GetNprimary() const = 0;
85 
86  // Current track particle
87  virtual TParticle* GetCurrentTrack() const= 0;
88 
89  // Current track number
90  virtual Int_t GetCurrentTrackNumber() const = 0;
91 
92  // Number of the parent of the current track
93  virtual Int_t GetCurrentParentTrackNumber() const = 0;
94 
95  ClassDef(TVirtualMCStack,1) //Interface to a particles stack
96 };
97 
98 #endif //ROOT_TVirtualMCStack
virtual void PushTrack(Int_t toBeDone, Int_t parent, Int_t pdg, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t tof, Double_t polx, Double_t poly, Double_t polz, TMCProcess mech, Int_t &ntr, Double_t weight, Int_t is)=0
virtual void SetCurrentTrack(Int_t trackNumber)=0
int Int_t
Definition: RtypesCore.h:41
virtual TParticle * PopPrimaryForTracking(Int_t i)=0
#define ClassDef(name, id)
Definition: Rtypes.h:254
virtual Int_t GetNtrack() const =0
virtual Int_t GetNprimary() const =0
virtual Int_t GetCurrentParentTrackNumber() const =0
virtual Int_t GetCurrentTrackNumber() const =0
double Double_t
Definition: RtypesCore.h:55
TMCProcess
Definition: TMCProcess.h:22
virtual ~TVirtualMCStack()
virtual TParticle * PopNextTrack(Int_t &itrack)=0
Mother of all ROOT objects.
Definition: TObject.h:58
virtual TParticle * GetCurrentTrack() const =0