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 Read(AliHBTRun* particles, AliHBTRun *tracks);
20 AliHBTEvent* GetParticleEvent(Int_t n);
21 AliHBTEvent* GetTrackEvent(Int_t n){return (fReader)?fReader->GetTrackEvent(n):0x0;}
22 Int_t GetNumberOfPartEvents(){return (fReader)?fReader->GetNumberOfPartEvents():0;}
23 Int_t GetNumberOfTrackEvents(){return (fReader)?fReader->GetNumberOfTrackEvents():0;}
25 void Randomize(AliHBTEvent* event);
26 void Randomize(AliHBTRun* run);
27 void SetEventVertex(Double_t x, Double_t y,Double_t z);
29 void SetGaussianBall(Double_t r);
30 void SetGaussianBall(Double_t rx, Double_t ry, Double_t rz);
31 void SetCyllinderSurface(Double_t r, Double_t l);
34 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p);
36 AliHBTReader* fReader;
37 AliHBTRndm* fRandomizer;
41 Bool_t fAddToExistingPos;
42 Bool_t fOnlyParticlesFromVertex;
44 Double_t fVX; //vertex position
45 Double_t fVY; //vertex position
46 Double_t fVZ; //vertex position
48 ClassDef(AliHBTPositionRandomizer,1)
51 class AliHBTRndm: public TObject
56 virtual void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p) = 0;
57 ClassDef(AliHBTRndm,1)
60 class AliHBTRndmGaussBall: public AliHBTRndm
63 AliHBTRndmGaussBall();
64 AliHBTRndmGaussBall(Float_t r);
65 AliHBTRndmGaussBall(Float_t rx, Float_t ry, Float_t rz);
66 ~AliHBTRndmGaussBall(){}
67 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*/*particle*/);
72 ClassDef(AliHBTRndmGaussBall,1)
75 class AliHBTRndmCyllSurf: public AliHBTRndm
78 AliHBTRndmCyllSurf():fR(0.0){}
79 AliHBTRndmCyllSurf(Float_t r, Float_t l):fR(r),fL(l){}
80 ~AliHBTRndmCyllSurf(){}
82 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle* particle);
87 ClassDef(AliHBTRndmCyllSurf,1)