ROOT logo
#ifndef ALIGENFUNCTION_H
#define ALIGENFUNCTION_H
/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
// Generator for particles according generic functions
//  
//  TF1 *   fFMomentum;           // momentum distribution function inGeV
//  TF1 *   fFPhi;                // phi distribution function in rad
//  TF1 *   fFTheta;              // theta distribution function in rad
//  TF3 *   fFPosition;           // position distribution function in cm
//  TF1 *   fFPdg;                // pdg distribution function  
//  We assume that the moment, postion and PDG code of particles are independent  
//  Only tracks/particle crossing the reference radius at given z range
//
// Origin: marian.ivanov@cern.ch


#include "AliGenerator.h"
class TF3;

class AliGenFunction : public AliGenerator
{
public:

  AliGenFunction();
  AliGenFunction(const AliGenFunction& func);
  AliGenFunction &operator=(const AliGenFunction& func);
  virtual ~AliGenFunction() {}
  virtual void Generate();
  virtual void Init();
  void SetFunctions(TF1 * momentum, TF1 *fphi, TF1 *ftheta, TF3 * position, TF1* pdg);
  void SetCylinder(Double_t refR, Double_t zmin, Double_t zmax);
  void SetBkG(Float_t b) { fBkG=b; return; }
private:
  Bool_t IntersectCylinder(Float_t r,Float_t zmin, Float_t zmax,Int_t pdg,
			   Float_t o[3],Float_t p[3]) const;  

  Float_t fBkG;                 // field in kGauss
  TF1 *   fFMomentum;           // momentum distribution function
  TF1 *   fFPhi;                // phi distribution function
  TF1 *   fFTheta;              // theta distribution function
  TF3 *   fFPosition;           // position distribution function 
  TF1 *   fFPdg;                // pdg distribution function  
  //
  Double_t fRefRadius;          // reference radius to be crossed
  Double_t fZmin;               // minimal z at reference radius
  Double_t fZmax;               // maximal z at reference radius
  Int_t    fMaxTrial;           // maximal number of attempts
  //
  ClassDef(AliGenFunction,1) // parametrized cosmics generator
};

#endif
 AliGenFunction.h:1
 AliGenFunction.h:2
 AliGenFunction.h:3
 AliGenFunction.h:4
 AliGenFunction.h:5
 AliGenFunction.h:6
 AliGenFunction.h:7
 AliGenFunction.h:8
 AliGenFunction.h:9
 AliGenFunction.h:10
 AliGenFunction.h:11
 AliGenFunction.h:12
 AliGenFunction.h:13
 AliGenFunction.h:14
 AliGenFunction.h:15
 AliGenFunction.h:16
 AliGenFunction.h:17
 AliGenFunction.h:18
 AliGenFunction.h:19
 AliGenFunction.h:20
 AliGenFunction.h:21
 AliGenFunction.h:22
 AliGenFunction.h:23
 AliGenFunction.h:24
 AliGenFunction.h:25
 AliGenFunction.h:26
 AliGenFunction.h:27
 AliGenFunction.h:28
 AliGenFunction.h:29
 AliGenFunction.h:30
 AliGenFunction.h:31
 AliGenFunction.h:32
 AliGenFunction.h:33
 AliGenFunction.h:34
 AliGenFunction.h:35
 AliGenFunction.h:36
 AliGenFunction.h:37
 AliGenFunction.h:38
 AliGenFunction.h:39
 AliGenFunction.h:40
 AliGenFunction.h:41
 AliGenFunction.h:42
 AliGenFunction.h:43
 AliGenFunction.h:44
 AliGenFunction.h:45
 AliGenFunction.h:46
 AliGenFunction.h:47
 AliGenFunction.h:48
 AliGenFunction.h:49
 AliGenFunction.h:50
 AliGenFunction.h:51
 AliGenFunction.h:52
 AliGenFunction.h:53