HARPO  5.1.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TpcSimMCEvent.cxx
Go to the documentation of this file.
1 
2 #include "TParticlePDG.h"
3 #include "TDatabasePDG.h"
4 #include "TClonesArray.h"
5 #include "TMath.h"
6 
7 #include "TpcSimMCEvent.h"
8 //#include "TpcSimTrack.h"
9 
10 ClassImp(TpcSimMCEvent)
11 
12 
14 TObject()
15 {
16  fX0 = 0;
17  fY0 = 0;
18  fZ0 = 0;
19  fT0 = 0;
20 
21  fPx = 0;
22  fPy = 0;
23  fPz = 0;
24 
25  fPolax = 0;
26  fPolay = 0;
27  fPolaz = 0;
28 
29  fE = 0;
30  fMass = 0;
31  fPdgCode = 0;
32 }
33 
35  TObject(tr), fX0(tr.fX0), fY0(tr.fY0), fZ0(tr.fZ0), fT0(tr.fT0), fPx(tr.fPx), fPy(tr.fPy), fPz(tr.fPz), fE(tr.fE), fPolax(tr.fPolax), fPolay(tr.fPolay), fPolaz(tr.fPolaz), fMass(tr.fMass), fPdgCode(tr.fPdgCode)
36 {
37  // fX0 = tr.GetX0();
38  // fY0 = tr.GetY0();
39  // fZ0 = tr.GetZ0();
40  // fT0 = tr.GetT0();
41 
42  // fPx = tr.GetPx();
43  // fPy = tr.GetPy();
44  // fPz = tr.GetPz();
45 
46  // fE = tr.GetE();
47  // fMass = tr.GetMass();
48  // fPdgCode = tr.GetPdgCode();
49 }
50 
51 TpcSimMCTrack::TpcSimMCTrack(Double_t x0, Double_t y0, Double_t z0, Double_t t0,
52  Double_t px, Double_t py, Double_t pz,
53  Int_t pid) :
54 TObject()
55 {
56  fX0 = x0;
57  fY0 = y0;
58  fZ0 = z0;
59  fT0 = t0;
60 
61  fPx = px;
62  fPy = py;
63  fPz = pz;
64 
65  fPolax = 0;
66  fPolay = 0;
67  fPolaz = 0;
68 
69  fPdgCode = pid;
70  // fParticlePDG
71  TParticlePDG* pdg = TDatabasePDG::Instance()->GetParticle(fPdgCode);
72  fMass = pdg->Mass();
73 
74  fE = TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz+fMass*fMass);
75 }
76 
77 
79 {
80  fTracks = new TClonesArray("TpcSimMCTrack",fkMaxNtracks);
81  fNtracks = 0;
82  fEvent = event;
83 
84 }
85 
86 
88 {
89  // for(Int_t i = 0; i<fNtracks; i++)
90  // fTracks[i]->Delete();
91  fTracks->Delete();
92 }
93 
95 {
97  Warning("AddTrack","Too many tracks in event");
98  return;
99  }
100  new((*fTracks)[fNtracks]) TpcSimMCTrack(*track);
101  //fTracks->AddAt(tr,fNtracks);
102  //fTracks[fNtracks] = tr;
103  fNtracks++;
104 
105 }
106 
107 
109 {
110  if(fNtracks>=fkMaxNtracks){
111  Warning("AddTrack","Too many tracks in event");
112  return;
113  }
114 
115  TpcSimMCTrack* tr = new TpcSimMCTrack(track->fXorig, track->fYorig, track->fZorig, track->fTorig,
116  track->fPx, track->fPy, track->fPz, track->fParticleId);
117 
118  new((*fTracks)[fNtracks]) TpcSimMCTrack(*tr);
119  //fTracks->AddAt(tr,fNtracks);
120  //fTracks[fNtracks] = tr;
121  fNtracks++;
122 
123 }
124 
125 // void TpcSimMCEvent::GenerateEvent(Int_t seed)
126 // {
127 
128 // Int_t ntracks = 3;
129 // while(fNtracks<ntracks){
130 // if(fNtracks>=fkMaxNtracks) break;
131 // //TpcSimTrack* track =
132 // new((*fTracks)[fNtracks]) TpcSimMCTrack(0,0,10,1,1,1,0,1,fEvent,fNtracks);
133 // fNtracks++;
134 // }
135 // }
TClonesArray * fTracks
Double_t fZ0
Definition: TpcSimMCEvent.h:65
Double_t fMass
Definition: TpcSimMCEvent.h:76
Double_t fPolax
Definition: TpcSimMCEvent.h:72
Double_t fPx
Definition: TpcSimMCEvent.h:68
Double_t fPz
Definition: TpcSimMCEvent.h:70
Double_t fY0
Definition: TpcSimMCEvent.h:64
Double_t fPolaz
Definition: TpcSimMCEvent.h:74
static const Int_t fkMaxNtracks
Double_t fPolay
Definition: TpcSimMCEvent.h:73
virtual ~TpcSimMCEvent()
void AddTrack(TpcSimMCTrack *tr)
Double_t fX0
Definition: TpcSimMCEvent.h:63
Double_t fPy
Definition: TpcSimMCEvent.h:69
Double_t fT0
Definition: TpcSimMCEvent.h:66
TpcSimMCEvent(Int_t event=-1)