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