]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HBTAN/AliHBTPositionRandomizer.h
ITS Track Points and Pair Cut on distances in ITS implement
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPositionRandomizer.h
CommitLineData
88cb7938 1#ifndef ALIHBTPOSITIONRANDOMIZER_H
2#define ALIHBTPOSITIONRANDOMIZER_H
abe00f6f 3//___________________________________________________
4////////////////////////////////////////////////////////////////////////////////
5//
6// class AliHBTPositionRandomizer
7//
8// These class randomizes particle vertex positions
9// Piotr.Skowronski@cern.ch
10//
11////////////////////////////////////////////////////////////////////////////////
88cb7938 12
13#include "AliHBTReader.h"
14
15class AliHBTRndm;
16class AliHBTEvent;
17class AliHBTRun;
18class AliHBTParticle;
6e1592b9 19class TH1I;
88cb7938 20
21class AliHBTPositionRandomizer: public AliHBTReader
22{
23 public:
24 enum EModelTypes{kGausBall,kCylinder,kCylinderSurf};
25 AliHBTPositionRandomizer();
26 AliHBTPositionRandomizer(AliHBTReader* reader);
abe00f6f 27 AliHBTPositionRandomizer(const AliHBTPositionRandomizer& in);
28
29 virtual ~AliHBTPositionRandomizer();
30
34914285 31 AliHBTPositionRandomizer& operator=(const AliHBTPositionRandomizer& in);
88cb7938 32
efaf00f8 33 Int_t Next(){return (fReader)?fReader->Next():1;}
34 void Rewind(){if(fReader) fReader->Rewind();}
35
36 Bool_t ReadsTracks() const {return (fReader)?fReader->ReadsTracks():kFALSE;}
37 Bool_t ReadsParticles() const {return (fReader)?fReader->ReadsParticles():kFALSE;}
38
39 Int_t Read(AliHBTRun* particles, AliHBTRun *tracks);
40
41 AliHBTEvent* GetParticleEvent() ;
42 AliHBTEvent* GetTrackEvent() ;
88cb7938 43
44 AliHBTEvent* GetParticleEvent(Int_t n);
45 AliHBTEvent* GetTrackEvent(Int_t n){return (fReader)?fReader->GetTrackEvent(n):0x0;}
46 Int_t GetNumberOfPartEvents(){return (fReader)?fReader->GetNumberOfPartEvents():0;}
47 Int_t GetNumberOfTrackEvents(){return (fReader)?fReader->GetNumberOfTrackEvents():0;}
6e1592b9 48 virtual TH1I* GetTrackCounter() const {return (fReader)?fReader->GetTrackCounter():0x0;}
49 virtual void WriteTrackCounter() const {if(fReader) fReader->WriteTrackCounter();}
50
abe00f6f 51 void Randomize(AliHBTEvent* event) const;
52 void Randomize(AliHBTRun* run) const;
88cb7938 53 void SetEventVertex(Double_t x, Double_t y,Double_t z);
54
55 void SetGaussianBall(Double_t r);
56 void SetGaussianBall(Double_t rx, Double_t ry, Double_t rz);
57 void SetCyllinderSurface(Double_t r, Double_t l);
58
3a3bc78a 59 void AddToPosition(Bool_t flag){fAddToExistingPos = flag;}
60 void RandomizeTracks(Bool_t flag){fRandomizeTracks = flag;}
61
62
88cb7938 63 protected:
64 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p);
efaf00f8 65 Int_t ReadNext(){return (fReader)?fReader->Next():1;}
abe00f6f 66
88cb7938 67 private:
abe00f6f 68 AliHBTReader* fReader; // Pointer to reader
69 AliHBTRndm* fRandomizer; // Pointer to class that performs randomization according to some model
88cb7938 70
abe00f6f 71 Int_t fModel; //Defines what model is used
88cb7938 72
abe00f6f 73 Bool_t fAddToExistingPos; //Determines if randomized position should be added to previous one, or overwrite old one
74 Bool_t fOnlyParticlesFromVertex; //Determines if randomization should be performed for particles from vertex
88cb7938 75
3a3bc78a 76 Bool_t fRandomizeTracks; //Determines if tracks should also be randimized
77
88cb7938 78 Double_t fVX; //vertex position
79 Double_t fVY; //vertex position
80 Double_t fVZ; //vertex position
81
82 ClassDef(AliHBTPositionRandomizer,1)
83};
84
85class AliHBTRndm: public TObject
86{
87 public:
88 AliHBTRndm(){}
abe00f6f 89 virtual ~AliHBTRndm(){}
90 virtual void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*p) const = 0;
88cb7938 91 ClassDef(AliHBTRndm,1)
92};
93
94class AliHBTRndmGaussBall: public AliHBTRndm
95{
96 public:
97 AliHBTRndmGaussBall();
98 AliHBTRndmGaussBall(Float_t r);
99 AliHBTRndmGaussBall(Float_t rx, Float_t ry, Float_t rz);
abe00f6f 100 virtual ~AliHBTRndmGaussBall(){}
101 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle*/*particle*/) const;
88cb7938 102 private:
abe00f6f 103 Float_t fRx; //Dispertion in x
104 Float_t fRy; //Dispertion in y
105 Float_t fRz; //Dispertion in z
88cb7938 106 ClassDef(AliHBTRndmGaussBall,1)
107};
108
109class AliHBTRndmCyllSurf: public AliHBTRndm
110{
111 public:
112 AliHBTRndmCyllSurf():fR(0.0){}
113 AliHBTRndmCyllSurf(Float_t r, Float_t l):fR(r),fL(l){}
abe00f6f 114 virtual ~AliHBTRndmCyllSurf(){}
88cb7938 115
abe00f6f 116 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliHBTParticle* particle) const;
88cb7938 117 private:
abe00f6f 118 Float_t fR; //Redius of cylinder
119 Float_t fL; //Length of cylinder
88cb7938 120
121 ClassDef(AliHBTRndmCyllSurf,1)
122};
123
124#endif
125