00001
00002
00128 #ifndef ROOT_StGenParticle
00129 #define ROOT_StGenParticle
00130
00131
00133 class StGenParticle {
00134
00135 protected:
00136
00137 StGenParticle(int idx=0){mIdx=idx;}
00138
00139 virtual ~StGenParticle(){;}
00140
00141 void SetIdx(int idx) { mIdx = idx;}
00142 int GetIdx() const { return mIdx;}
00143
00144 public:
00145
00146 virtual void Print(const char *opt="") const;
00147 virtual int GetStatusCode() const=0;
00148 virtual int GetPdgCode() const;
00149 virtual int GetGeaCode() const;
00150 virtual const StGenParticle *GetMother(int i=0) const=0;
00151 virtual const StGenParticle *GetDaughter(int i) const=0;
00152 virtual double GetCalcMass () const;
00153 virtual double GetMass () const=0;
00154 virtual int GetNDaughters () const=0;
00155 virtual double GetWeight () const { return 1.;}
00156 virtual void Momentum(double p4[4]) const=0 ;
00157 virtual void Vertex(double v[3]) const=0;
00158 virtual double Time() const=0;
00159 int IsPrimary () const { return !GetMother(0);}
00160 int IsFinal () const { return !GetStatusCode()==1;}
00161
00162 double R () const;
00163 double Rho () const;
00164 double P () const;
00165 double Pt () const;
00166 double Energy() const;
00167 double Eta () const;
00168 double Phi () const;
00169 double Theta () const;
00170
00171 protected:
00172
00173 int mIdx;
00174 };
00175
00176 class StGenParticleMaster {
00177
00178
00179 protected:
00180
00181 StGenParticleMaster(){;}
00182
00183 public:
00184 int Size() const { return mNTk;}
00185
00186 virtual ~StGenParticleMaster(){;}
00187 virtual void Update()=0;
00188 virtual void Print(const char *tit) const;
00189
00190 virtual const StGenParticle *operator()(int idx) const=0;
00191 static int Gea2Pdg(int igea);
00192 static int Pdg2Gea(int ipdg);
00193 static double Gea2Mas(int igea);
00194
00195
00196 protected:
00197 int mNTk;
00198
00199
00200 };
00201
00202 #endif
00203