00001
00002
00003
00004
00005
00006
00007 #ifndef EVENT_MCPARTICLE_H
00008 #define EVENT_MCPARTICLE_H 1
00009
00010 #include "EVENT/LCObject.h"
00011 #include "EVENT/MCParticle.h"
00012 #include "empty_ignore.h"
00013
00014 #include <vector>
00015
00016 namespace EVENT {
00017
00018
00019 class MCParticle ;
00021 typedef std::vector<MCParticle*> MCParticleVec ;
00027 class MCParticle : public LCObject {
00028
00029 public:
00031 virtual ~MCParticle() { ; }
00032
00033
00035 typedef MCParticle lcobject_type ;
00036
00040 virtual double getEnergy() const = 0;
00041
00044 virtual const float* getSpin() const = 0;
00045
00048 virtual const int* getColorFlow() const = 0;
00049
00052 virtual const MCParticleVec & getParents() const = 0;
00053
00056 virtual const MCParticleVec & getDaughters() const = 0;
00057
00060 virtual int getPDG() const = 0;
00061
00068 virtual int getGeneratorStatus() const = 0;
00069
00083 virtual int getSimulatorStatus() const = 0;
00084
00085
00086
00087 static const int BITEndpoint = 31 ;
00088 static const int BITCreatedInSimulation = 30 ;
00089 static const int BITBackscatter = 29 ;
00090 static const int BITVertexIsNotEndpointOfParent = 28 ;
00091 static const int BITDecayedInTracker = 27 ;
00092 static const int BITDecayedInCalorimeter = 26 ;
00093 static const int BITLeftDetector = 25 ;
00094 static const int BITStopped = 24 ;
00095 static const int BITOverlay = 23 ;
00096
00099 virtual bool isCreatedInSimulation() const = 0;
00100
00107 virtual bool isBackscatter() const = 0;
00108
00112 virtual bool vertexIsNotEndpointOfParent() const = 0;
00113
00116 virtual bool isDecayedInTracker() const = 0;
00117
00121 virtual bool isDecayedInCalorimeter() const = 0;
00122
00125 virtual bool hasLeftDetector() const = 0;
00126
00129 virtual bool isStopped() const = 0;
00130
00133 virtual bool isOverlay() const = 0;
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00146 virtual const double* getVertex() const = 0;
00147
00152 virtual float getTime() const = 0;
00153
00160 virtual const double* getEndpoint() const = 0;
00161
00165 virtual const double* getMomentum() const = 0;
00166
00170 virtual const double* getMomentumAtEndpoint() const = 0;
00171
00174 virtual double getMass() const = 0;
00175
00178 virtual float getCharge() const = 0;
00179
00180 };
00181 }
00182 #endif