VMC Version 2.0
Loading...
Searching...
No Matches
TVirtualMCStack.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------
2// Copyright (C) 2019 CERN and copyright holders of VMC Project.
3// This software is distributed under the terms of the GNU General Public
4// License v3 (GPL Version 3), copied verbatim in the file "LICENSE".
5//
6// See https://github.com/vmc-project/vmc for full licensing information.
7// -----------------------------------------------------------------------
8
9// Authors: Ivana Hrivnacova 13/04/2002
10
11/*************************************************************************
12 * Copyright (C) 2006, Rene Brun and Fons Rademakers. *
13 * Copyright (C) 2002, ALICE Experiment at CERN. *
14 * All rights reserved. *
15 * *
16 * For the licensing terms see $ROOTSYS/LICENSE. *
17 * For the list of contributors see $ROOTSYS/README/CREDITS. *
18 *************************************************************************/
19
20#ifndef ROOT_TVirtualMCStack
21#define ROOT_TVirtualMCStack
22
23// Class TVirtualMCStack
24// ---------------------
25// Interface to a user defined particles stack.
26//
27
28#include "TObject.h"
29#include "TMCProcess.h"
30
31class TParticle;
32
33class TVirtualMCStack : public TObject {
34
35public:
36 // Constructor
38
39 // Destructor
40 virtual ~TVirtualMCStack();
41
42 //
43 // Methods for stacking
44 //
45
59 virtual void PushTrack(Int_t toBeDone, Int_t parent, Int_t pdg, Double_t px, Double_t py, Double_t pz, Double_t e,
60 Double_t vx, Double_t vy, Double_t vz, Double_t tof, Double_t polx, Double_t poly,
61 Double_t polz, TMCProcess mech, Int_t &ntr, Double_t weight, Int_t is) = 0;
62
66 virtual TParticle *PopNextTrack(Int_t &itrack) = 0;
67
71 virtual TParticle *PopPrimaryForTracking(Int_t i) = 0;
72
73 //
74 // Set methods
75 //
76
78 virtual void SetCurrentTrack(Int_t trackNumber) = 0;
79
80 //
81 // Get methods
82 //
83
85 virtual Int_t GetNtrack() const = 0;
86
88 virtual Int_t GetNprimary() const = 0;
89
91 virtual TParticle *GetCurrentTrack() const = 0;
92
94 virtual Int_t GetCurrentTrackNumber() const = 0;
95
97 virtual Int_t GetCurrentParentTrackNumber() const = 0;
98
99 ClassDef(TVirtualMCStack, 1) // Interface to a particles stack
100};
101
102#endif // ROOT_TVirtualMCStack
TMCProcess
VMC physics process codes.
Definition: TMCProcess.h:30
Interface to a user defined particles stack.
virtual ~TVirtualMCStack()
Destructor.
virtual TParticle * PopNextTrack(Int_t &itrack)=0
The stack has to provide two pop mechanisms: The first pop mechanism required.
TVirtualMCStack()
Default constructor.
virtual Int_t GetNprimary() const =0
Total number of primary tracks.
virtual Int_t GetCurrentTrackNumber() const =0
Current track number.
virtual TParticle * GetCurrentTrack() const =0
Current track particle.
virtual Int_t GetNtrack() const =0
Total number of tracks.
virtual void SetCurrentTrack(Int_t trackNumber)=0
Set the current track number.
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
Create a new particle and push into stack;.
virtual TParticle * PopPrimaryForTracking(Int_t i)=0
The second pop mechanism required.
virtual Int_t GetCurrentParentTrackNumber() const =0
Number of the parent of the current track.