1 #ifndef ALIHBTPOSITIONRANDOMIZER_H
2 #define ALIHBTPOSITIONRANDOMIZER_H
4 #include "AliHBTReader.h"
11 class AliHBTPositionRandomizer: public AliHBTReader
14 enum EModelTypes{kGausBall,kCylinder,kCylinderSurf};
15 AliHBTPositionRandomizer();
16 AliHBTPositionRandomizer(AliHBTReader* reader);
18 Int_t Next(){return (fReader)?fReader->Next():1;}
19 void Rewind(){if(fReader) fReader->Rewind();}
21 Bool_t ReadsTracks() const {return (fReader)?fReader->ReadsTracks():kFALSE;}
22 Bool_t ReadsParticles() const {return (fReader)?fReader->ReadsParticles():kFALSE;}
24 Int_t Read(AliHBTRun* particles, AliHBTRun *tracks);
26 AliHBTEvent* GetParticleEvent() ;
27 AliHBTEvent* GetTrackEvent() ;
29 AliHBTEvent* GetParticleEvent(Int_t n);
30 AliHBTEvent* GetTrackEvent(Int_t n){return (fReader)?fReader->GetTrackEvent(n):0x0;}
31 Int_t GetNumberOfPartEvents(){return (fReader)?fReader->GetNumberOfPartEvents():0;}
32 Int_t GetNumberOfTrackEvents(){return (fReader)?fReader->GetNumberOfTrackEvents():0;}
34 void Randomize(AliHBTEvent* event);
35 void Randomize(AliHBTRun* run);
36 void SetEventVertex(Double_t x, Double_t y,Double_t z);
38 void SetGaussianBall(Double_t r);
39 void SetGaussianBall(Double_t rx, Double_t ry, Double_t rz);
40 void SetCyllinderSurface(Double_t r, Double_t l);
43 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p);
44 Int_t ReadNext(){return (fReader)?fReader->Next():1;}
46 AliHBTReader* fReader;
47 AliHBTRndm* fRandomizer;
51 Bool_t fAddToExistingPos;
52 Bool_t fOnlyParticlesFromVertex;
54 Double_t fVX; //vertex position
55 Double_t fVY; //vertex position
56 Double_t fVZ; //vertex position
58 ClassDef(AliHBTPositionRandomizer,1)
61 class AliHBTRndm: public TObject
66 virtual void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p) = 0;
67 ClassDef(AliHBTRndm,1)
70 class AliHBTRndmGaussBall: public AliHBTRndm
73 AliHBTRndmGaussBall();
74 AliHBTRndmGaussBall(Float_t r);
75 AliHBTRndmGaussBall(Float_t rx, Float_t ry, Float_t rz);
76 ~AliHBTRndmGaussBall(){}
77 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*/*particle*/);
82 ClassDef(AliHBTRndmGaussBall,1)
85 class AliHBTRndmCyllSurf: public AliHBTRndm
88 AliHBTRndmCyllSurf():fR(0.0){}
89 AliHBTRndmCyllSurf(Float_t r, Float_t l):fR(r),fL(l){}
90 ~AliHBTRndmCyllSurf(){}
92 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle* particle);
97 ClassDef(AliHBTRndmCyllSurf,1)