]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HBTAN/AliHBTPositionRandomizer.h
Cut Property enum moved to BaseCut -> Not to pollute global name space
[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
415b66b5 13#include "AliReader.h"
88cb7938 14class AliHBTRndm;
6e1592b9 15class TH1I;
88cb7938 16
415b66b5 17class AliHBTPositionRandomizer: public AliReader
88cb7938 18{
19 public:
20 enum EModelTypes{kGausBall,kCylinder,kCylinderSurf};
21 AliHBTPositionRandomizer();
415b66b5 22 AliHBTPositionRandomizer(AliReader* reader);
abe00f6f 23 AliHBTPositionRandomizer(const AliHBTPositionRandomizer& in);
24
25 virtual ~AliHBTPositionRandomizer();
26
34914285 27 AliHBTPositionRandomizer& operator=(const AliHBTPositionRandomizer& in);
88cb7938 28
efaf00f8 29 Int_t Next(){return (fReader)?fReader->Next():1;}
30 void Rewind(){if(fReader) fReader->Rewind();}
31
415b66b5 32 Bool_t ReadsRec() const {return (fReader)?fReader->ReadsRec():kFALSE;}
33 Bool_t ReadsSim() const {return (fReader)?fReader->ReadsSim():kFALSE;}
efaf00f8 34
415b66b5 35 AliAOD* GetEventSim() ;
36 AliAOD* GetEventRec() ;
88cb7938 37
415b66b5 38 AliAOD* GetEventSim(Int_t n);
39 AliAOD* GetEventRec(Int_t n){return (fReader)?fReader->GetEventRec(n):0x0;}
40
41 Int_t GetNumberOfSimEvents(){return (fReader)?fReader->GetNumberOfSimEvents():0;}
42 Int_t GetNumberOfRecEvents(){return (fReader)?fReader->GetNumberOfRecEvents():0;}
6e1592b9 43 virtual TH1I* GetTrackCounter() const {return (fReader)?fReader->GetTrackCounter():0x0;}
44 virtual void WriteTrackCounter() const {if(fReader) fReader->WriteTrackCounter();}
45
415b66b5 46 void Randomize(AliAOD* event) const;
88cb7938 47 void SetEventVertex(Double_t x, Double_t y,Double_t z);
48
49 void SetGaussianBall(Double_t r);
50 void SetGaussianBall(Double_t rx, Double_t ry, Double_t rz);
51 void SetCyllinderSurface(Double_t r, Double_t l);
52
3a3bc78a 53 void AddToPosition(Bool_t flag){fAddToExistingPos = flag;}
54 void RandomizeTracks(Bool_t flag){fRandomizeTracks = flag;}
55
56
88cb7938 57 protected:
415b66b5 58 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliVAODParticle*p);
efaf00f8 59 Int_t ReadNext(){return (fReader)?fReader->Next():1;}
abe00f6f 60
88cb7938 61 private:
415b66b5 62 AliReader* fReader; // Pointer to reader
abe00f6f 63 AliHBTRndm* fRandomizer; // Pointer to class that performs randomization according to some model
88cb7938 64
abe00f6f 65 Int_t fModel; //Defines what model is used
88cb7938 66
abe00f6f 67 Bool_t fAddToExistingPos; //Determines if randomized position should be added to previous one, or overwrite old one
68 Bool_t fOnlyParticlesFromVertex; //Determines if randomization should be performed for particles from vertex
88cb7938 69
3a3bc78a 70 Bool_t fRandomizeTracks; //Determines if tracks should also be randimized
71
88cb7938 72 Double_t fVX; //vertex position
73 Double_t fVY; //vertex position
74 Double_t fVZ; //vertex position
75
76 ClassDef(AliHBTPositionRandomizer,1)
77};
78
79class AliHBTRndm: public TObject
80{
81 public:
82 AliHBTRndm(){}
abe00f6f 83 virtual ~AliHBTRndm(){}
415b66b5 84 virtual void Randomize(Double_t& x,Double_t& y,Double_t&z, AliVAODParticle*p) const = 0;
88cb7938 85 ClassDef(AliHBTRndm,1)
86};
87
88class AliHBTRndmGaussBall: public AliHBTRndm
89{
90 public:
91 AliHBTRndmGaussBall();
92 AliHBTRndmGaussBall(Float_t r);
93 AliHBTRndmGaussBall(Float_t rx, Float_t ry, Float_t rz);
abe00f6f 94 virtual ~AliHBTRndmGaussBall(){}
415b66b5 95 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliVAODParticle*/*particle*/) const;
88cb7938 96 private:
abe00f6f 97 Float_t fRx; //Dispertion in x
98 Float_t fRy; //Dispertion in y
99 Float_t fRz; //Dispertion in z
88cb7938 100 ClassDef(AliHBTRndmGaussBall,1)
101};
102
103class AliHBTRndmCyllSurf: public AliHBTRndm
104{
105 public:
106 AliHBTRndmCyllSurf():fR(0.0){}
107 AliHBTRndmCyllSurf(Float_t r, Float_t l):fR(r),fL(l){}
abe00f6f 108 virtual ~AliHBTRndmCyllSurf(){}
88cb7938 109
415b66b5 110 void Randomize(Double_t& x,Double_t& y,Double_t&z, AliVAODParticle* particle) const;
88cb7938 111 private:
abe00f6f 112 Float_t fR; //Redius of cylinder
113 Float_t fL; //Length of cylinder
88cb7938 114
115 ClassDef(AliHBTRndmCyllSurf,1)
116};
117
118#endif
119