StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StMuDstVtxT.h
1 #ifndef __StMuDstVtxT_h__
2 #define __StMuDstVtxT_h__
3 #include "Riostream.h"
4 #include "TObject.h"
5 #include "TVector3.h"
6 #include "StKFTrack.h"
7 class StMuDstVtxT;
8 std::ostream& operator<<(std::ostream& os, const StMuDstVtxT& v);
9 class StMuDstVtxT : public TObject {
10 public:
11  StMuDstVtxT(Double_t x = 0, Double_t y = 0, Double_t z = 0,
12  Double_t sigma_x = 0, Double_t sigma_y = 0, Double_t sigma_z = 0,
13  Int_t multU = 0, Int_t mult = 0, Int_t multC = 0, Int_t multW = 0,
14  Int_t multE = 0, Int_t q = 0, Int_t r = 0,
15  Short_t idTruth = 0, Short_t Qual = 0, Int_t idParentTk = 0) :
16  fMultU(multU), fMult(mult), fMultC(multC), fMultW(multW), fMultE(multE), fQ(q), fRank(r),
17  fXyz(x,y,z), fSigmaXyz(sigma_x,sigma_y,sigma_z),
18  fIdTruth(idTruth), fQuality(Qual), fIdParentTk(idParentTk), fTimeMc(0), fNoDaughtersMc(0), fgePidMc(0) {}
19  virtual ~StMuDstVtxT() {}
20  TVector3 &Xyz() {return *&fXyz;}
21  TVector3 &SigmaXyz() {return *&fSigmaXyz;}
22  TVector3 Xyz() const {return fXyz;}
23  TVector3 SigmaXyz() const {return fSigmaXyz;}
24  TVector3 &XyzMc() {return *&fXyzMc;}
25  TVector3 XyzMc() const {return fXyzMc;}
26  Int_t Mult() const {return fMult;}
27  Int_t MultU() const {return fMultU;}
28  Int_t MultC() const {return fMultC;}
29  Int_t MultW() const {return fMultW;}
30  Int_t MultE() const {return fMultE;}
31  Int_t Q() const {return fQ;}
32  Int_t Rank() const {return fRank;}
33  Short_t IdTruth() const {return fIdTruth;}
34  Short_t QaTruth() const {return fQuality;}
35  Int_t IdParentTk() const {return fIdParentTk;}
36  Float_t TimeMc() const {return fTimeMc;}
37  Int_t NoDaughtersMc() const {return fNoDaughtersMc;}
38  Int_t gePidMc() const {return fgePidMc;}
39  void Print(Option_t *option="") const {if (option) {}; std::cout << *this << std::endl;}
40  void SetMc(Int_t NoMuMcVertex = 0, Int_t NoMuMcTrack = 0, const Float_t *time = 0,
41  const Float_t *x = 0,const Float_t *y = 0,const Float_t *z = 0,
42  const Int_t *NoDaughters = 0,const Int_t *IdParTrk = 0,const Int_t *gePid = 0) {
43  Int_t kv = IdTruth();
44  if (kv > 0 && kv <= NoMuMcVertex) {
45  if (time && x && y && z && NoDaughters && IdParTrk) {
46  fTimeMc = 1e9*time[kv-1];
47  fXyzMc = TVector3(x[kv-1],y[kv-1],z[kv-1]);
48  fNoDaughtersMc = NoDaughters[kv-1];
49  Int_t kvp = IdParTrk[kv-1];
50  if (kvp > 0 && kvp <= NoMuMcTrack) {
51  fgePidMc = StKFTrack::CorrectGePid(gePid[kvp-1]);
52  }
53  }
54  }
55  }
56 protected:
57  Int_t fMultU, fMult, fMultC, fMultW, fMultE;
58  Int_t fQ; // charge
59  Int_t fRank; // MC=>0
60  TVector3 fXyz;
61  TVector3 fSigmaXyz;
62  Short_t fIdTruth;
63  Short_t fQuality;
64  Int_t fIdParentTk;
65  Float_t fTimeMc;
66  TVector3 fXyzMc;
67  Int_t fNoDaughtersMc;
68  Int_t fgePidMc;
69  ClassDef(StMuDstVtxT,1)
70 };
71 #endif