1 #ifndef ALIGENFUNCTION_H
2 #define ALIGENFUNCTION_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5 // Generator for particles according generic functions
7 // TF1 * fFMomentum; // momentum distribution function inGeV
8 // TF1 * fFPhi; // phi distribution function in rad
9 // TF1 * fFTheta; // theta distribution function in rad
10 // TF3 * fFPosition; // position distribution function in cm
11 // TF1 * fFPdg; // pdg distribution function
12 // We assume that the moment, postion and PDG code of particles are independent
13 // Only tracks/particle crossing the reference radius at given z range
15 // Origin: marian.ivanov@cern.ch
18 #include "AliGenerator.h"
21 class AliGenFunction : public AliGenerator
26 AliGenFunction(const AliGenFunction& func);
27 AliGenFunction &operator=(const AliGenFunction& func);
28 virtual ~AliGenFunction() {}
29 virtual void Generate();
31 void SetFunctions(TF1 * momentum, TF1 *fphi, TF1 *ftheta, TF3 * position, TF1* pdg);
32 void SetCylinder(Double_t refR, Double_t zmin, Double_t zmax);
33 void SetBkG(Float_t b) { fBkG=b; return; }
35 Bool_t IntersectCylinder(Float_t r,Float_t zmin, Float_t zmax,Int_t pdg,
36 Float_t o[3],Float_t p[3]) const;
38 Float_t fBkG; // field in kGauss
39 TF1 * fFMomentum; // momentum distribution function
40 TF1 * fFPhi; // phi distribution function
41 TF1 * fFTheta; // theta distribution function
42 TF3 * fFPosition; // position distribution function
43 TF1 * fFPdg; // pdg distribution function
45 Double_t fRefRadius; // reference radius to be crossed
46 Double_t fZmin; // minimal z at reference radius
47 Double_t fZmax; // maximal z at reference radius
48 Int_t fMaxTrial; // maximal number of attempts
50 ClassDef(AliGenFunction,1) // parametrized cosmics generator