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