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()
24 if(fgkInitEventSize<1)
26 Fatal("AliHBTEvent::AliHBTEvent()",
27 "fgkInitEventSize has a stiupid value (%d). Change it to positive number and recompile",
31 fSize=fgkInitEventSize;
32 fParticles = new AliHBTParticle* [fSize];
36 /**************************************************************************/
38 AliHBTEvent::~AliHBTEvent()
40 this->Reset();//delete all particles
43 delete [] fParticles; //and delete array itself
47 /**************************************************************************/
48 void AliHBTEvent::Reset()
50 //deletes all particles from the event
51 if(fParticles && fOwner)
53 for(Int_t i =0; i<fNParticles; i++)
59 AliHBTParticle* AliHBTEvent::GetParticleSafely(Int_t n)
61 if( (n<0) || (fNParticles<=n) ) return 0x0;
62 else return fParticles[n];
65 /**************************************************************************/
67 void AliHBTEvent:: AddParticle(AliHBTParticle* hbtpart)
69 //Adds new perticle to the event
70 if ( fNParticles+1 >= fSize) Expand(); //if there is no space in array, expand it
71 fParticles[fNParticles++] = hbtpart; //add a pointer
74 /**************************************************************************/
75 void AliHBTEvent::AddParticle(TParticle* part, Int_t idx)
77 AddParticle( new AliHBTParticle(*part,idx) );
79 /**************************************************************************/
81 AddParticle(Int_t pdg, Int_t idx, Double_t px, Double_t py, Double_t pz, Double_t etot,
82 Double_t vx, Double_t vy, Double_t vz, Double_t time)
84 AddParticle(new AliHBTParticle(pdg,idx,px,py,pz,etot,vx,vy,vz,time) );
86 /**************************************************************************/
88 void AliHBTEvent::Expand()
90 //expands the array with pointers to particles
91 //about the size defined in fgkInitEventSize
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");
99 for(Int_t i = 0; i<fNParticles ;i++)
100 //copy pointers to the new array
102 tmpParticles[i] = fParticles[i];
104 delete [] fParticles; //delete old array
105 fParticles = tmpParticles; //copy new pointer to the array of pointers to particles