1 //__________________________________________________________
2 ///////////////////////////////////////////////////////////////////
6 // This class is container for paticles coming from one event
8 // Piotr.Skowronski@cern.ch
10 ///////////////////////////////////////////////////////////////////
13 #include "AliHBTEvent.h"
14 #include "AliHBTParticle.h"
18 const UInt_t AliHBTEvent::fgkInitEventSize = 100;
20 /**************************************************************************/
22 AliHBTEvent::AliHBTEvent():
23 fSize(fgkInitEventSize),
24 fParticles(new AliHBTParticle* [fSize]),
30 if(fgkInitEventSize<1)
32 Fatal("AliHBTEvent::AliHBTEvent()",
33 "fgkInitEventSize has a stiupid value (%d). Change it to positive number and recompile",
38 /**************************************************************************/
40 AliHBTEvent::~AliHBTEvent()
43 this->Reset();//delete all particles
46 delete [] fParticles; //and delete array itself
50 /**************************************************************************/
51 void AliHBTEvent::Reset()
53 //deletes all particles from the event
54 if(fParticles && fOwner)
56 for(Int_t i =0; i<fNParticles; i++)
61 /**************************************************************************/
63 AliHBTParticle* AliHBTEvent::GetParticleSafely(Int_t n)
65 //returns nth particle with range check
66 if( (n<0) || (fNParticles<=n) ) return 0x0;
67 else return fParticles[n];
69 /**************************************************************************/
71 void AliHBTEvent:: AddParticle(AliHBTParticle* hbtpart)
73 //Adds new perticle to the event
74 if ( fNParticles+1 >= fSize) Expand(); //if there is no space in array, expand it
75 fParticles[fNParticles++] = hbtpart; //add a pointer
77 /**************************************************************************/
79 void AliHBTEvent::AddParticle(TParticle* part, Int_t idx)
81 //Adds TParticle to event
82 AddParticle( new AliHBTParticle(*part,idx) );
84 /**************************************************************************/
85 void AliHBTEvent::AddParticle(Int_t pdg, Int_t idx,
86 Double_t px, Double_t py, Double_t pz, Double_t etot,
87 Double_t vx, Double_t vy, Double_t vz, Double_t time)
89 //adds particle to event
90 AddParticle(new AliHBTParticle(pdg,idx,px,py,pz,etot,vx,vy,vz,time) );
92 /**************************************************************************/
94 void AliHBTEvent::Expand()
96 //expands the array with pointers to particles
97 //about the size defined in fgkInitEventSize
99 fSize+=fgkInitEventSize;
100 AliHBTParticle** tmpParticles = new AliHBTParticle* [fSize]; //create new array of pointers
101 //check if we got memory / if not Abort
102 if (!tmpParticles) Fatal("AliHBTEvent::Expand()","No more space in memory");
105 for(Int_t i = 0; i<fNParticles ;i++)
106 //copy pointers to the new array
108 tmpParticles[i] = fParticles[i];
110 delete [] fParticles; //delete old array
111 fParticles = tmpParticles; //copy new pointer to the array of pointers to particles