/usr/include/root/TVirtualMCStack.h is in libroot-montecarlo-vmc-dev 5.34.14-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | // @(#)root/vmc:$Id$
// Authors: Ivana Hrivnacova 13/04/2002
/*************************************************************************
* Copyright (C) 2006, Rene Brun and Fons Rademakers. *
* Copyright (C) 2002, ALICE Experiment at CERN. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TVirtualMCStack
#define ROOT_TVirtualMCStack
// Class TVirtualMCStack
// ---------------------
// Interface to a user defined particles stack.
//
#include "TObject.h"
#include "TMCProcess.h"
class TParticle;
class TVirtualMCStack : public TObject {
public:
// Constructor
TVirtualMCStack();
// Destructor
virtual ~TVirtualMCStack();
//
// Methods for stacking
//
// Create a new particle and push into stack;
// toBeDone - 1 if particles should go to tracking, 0 otherwise
// parent - number of the parent track, -1 if track is primary
// pdg - PDG encoding
// px, py, pz - particle momentum [GeV/c]
// e - total energy [GeV]
// vx, vy, vz - position [cm]
// tof - time of flight [s]
// polx, poly, polz - polarization
// mech - creator process VMC code
// ntr - track number (is filled by the stack
// weight - particle weight
// is - generation status code
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;
// The stack has to provide two pop mechanisms:
// The first pop mechanism required.
// Pop all particles with toBeDone = 1, both primaries and seconadies
virtual TParticle* PopNextTrack(Int_t& itrack) = 0;
// The second pop mechanism required.
// Pop only primary particles with toBeDone = 1, stacking of secondaries
// is done by MC
virtual TParticle* PopPrimaryForTracking(Int_t i) = 0;
//
// Set methods
//
// Set the current track number
virtual void SetCurrentTrack(Int_t trackNumber) = 0;
//
// Get methods
//
// Total number of tracks
virtual Int_t GetNtrack() const = 0;
// Total number of primary tracks
virtual Int_t GetNprimary() const = 0;
// Current track particle
virtual TParticle* GetCurrentTrack() const= 0;
// Current track number
virtual Int_t GetCurrentTrackNumber() const = 0;
// Number of the parent of the current track
virtual Int_t GetCurrentParentTrackNumber() const = 0;
ClassDef(TVirtualMCStack,1) //Interface to a particles stack
};
#endif //ROOT_TVirtualMCStack
|