1b446896 |
1 | #include "AliHBTEvent.h" |
2 | #include "AliHBTParticle.h" |
3 | |
4 | ClassImp(AliHBTEvent) |
5 | |
6 | const UInt_t AliHBTEvent::fgkInitEventSize = 10000; |
7 | |
8 | |
9 | |
10 | /**************************************************************************/ |
11 | |
12 | AliHBTEvent::AliHBTEvent() |
13 | { |
14 | if(fgkInitEventSize<1) |
15 | { |
16 | Fatal("AliHBTEvent::AliHBTEvent()", |
17 | "fgkInitEventSize has a stiupid value (%d). Change it to positive number and recompile", |
18 | fgkInitEventSize); |
19 | |
20 | } |
21 | fSize=fgkInitEventSize; |
22 | fParticles = new AliHBTParticle* [fSize]; |
23 | fNParticles = 0; |
24 | } |
25 | /**************************************************************************/ |
26 | |
27 | AliHBTEvent::~AliHBTEvent() |
28 | { |
29 | this->Reset();//delete all particles |
30 | if(fParticles) |
31 | { |
32 | delete [] fParticles; //and delete array itself |
33 | } |
34 | fParticles = 0x0; |
35 | } |
36 | /**************************************************************************/ |
37 | void AliHBTEvent::Reset() |
38 | { |
39 | //deletes all particles from the event |
40 | if(fParticles) |
41 | { |
42 | for(Int_t i =0; i<fNParticles; i++) |
43 | delete fParticles[i]; |
44 | } |
45 | fNParticles = 0; |
46 | } |
47 | |
48 | AliHBTParticle* AliHBTEvent::GetParticleSafely(Int_t n) |
49 | { |
50 | if( (n<0) || (fNParticles<=n) ) return 0x0; |
51 | else return fParticles[n]; |
52 | |
53 | } |
54 | /**************************************************************************/ |
55 | |
56 | void AliHBTEvent:: AddParticle(AliHBTParticle* hbtpart) |
57 | { |
58 | //Adds new perticle to the event |
59 | if ( fNParticles+1 >= fSize) Expand(); //if there is no space in array, expand it |
60 | fParticles[fNParticles++] = hbtpart; //add a pointer |
61 | } |
62 | |
63 | /**************************************************************************/ |
64 | void AliHBTEvent::AddParticle(TParticle* part) |
65 | { |
66 | AddParticle( new AliHBTParticle(*part) ); |
67 | } |
68 | /**************************************************************************/ |
69 | void AliHBTEvent:: |
70 | AddParticle(Int_t pdg, Double_t px, Double_t py, Double_t pz, Double_t etot, |
71 | Double_t vx, Double_t vy, Double_t vz, Double_t time) |
72 | { |
73 | AddParticle(new AliHBTParticle(pdg,px,py,pz,etot,vx,vy,vz,time) ); |
74 | } |
75 | /**************************************************************************/ |
76 | |
77 | void AliHBTEvent::Expand() |
78 | { |
79 | //expands the array with pointers to particles |
80 | //about the size defined in fgkInitEventSize |
81 | |
82 | fSize+=fgkInitEventSize; |
83 | AliHBTParticle** tmpParticles = new AliHBTParticle* [fSize]; //create new array of pointers |
84 | //check if we got memory / if not Abort |
85 | if (!tmpParticles) Fatal("AliHBTEvent::Expand()","No more space in memory"); |
86 | |
87 | |
88 | for(Int_t i = 0; i<fNParticles ;i++) |
89 | //copy pointers to the new array |
90 | { |
91 | tmpParticles[i] = fParticles[i]; |
92 | } |
93 | delete [] fParticles; //delete old array |
94 | fParticles = tmpParticles; //copy new pointer to the array of pointers to particles |
95 | |
96 | } |
97 | |
98 | |
99 | |