]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenFLUKAsource.h
AliGenMC base class for AliGenParam and AliGenPythia commonalities.
[u/mrichter/AliRoot.git] / EVGEN / AliGenFLUKAsource.h
1 #ifndef ALIGENFLUKASOURCE_H
2 #define ALIGENFLUKASOURCE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 // Read background particles from a FLUKA boundary source file
10 // This is a very special generator that works for background studies for the muon-spectrometer 
11 // Ask: andreas.morsch@cern.ch
12
13 #include "AliGenerator.h"
14 class TChain;
15 class TTree;
16 class AliGenFLUKAsource : public AliGenerator
17
18 {
19 public:
20     enum constants {kAll = 6, kGammas = 7, kNeutrons = 8, kCharged = 9, kNoNeutron = 10};
21
22     AliGenFLUKAsource();
23     AliGenFLUKAsource(Int_t npart);
24     AliGenFLUKAsource(const AliGenFLUKAsource &FLUKAsource);
25     virtual ~AliGenFLUKAsource();
26     // Initialise 
27     virtual void Init() {}
28     // Initialise fluka data 
29     virtual void FlukaInit();
30     // choose particle type
31     virtual void SetPartFlag(Int_t ikine) {fIkine=ikine;}
32     // set time cut 
33     virtual void SetAgeMax(Float_t agemax) {fAgeMax=agemax;}
34     // use additional weight on neutrals
35     virtual void SetAddWeight(Float_t addwgt) {fAddWeight=addwgt;}
36     // z-shift of vertex
37     virtual void SetZshift(Float_t zshift) {fZshift=zshift;}
38     // set file name of data file
39     virtual void SetFileName(const Text_t *filname) {fFileName=filname;}
40     // set source
41     virtual void SetSourceId(Int_t id=-1){fSourceId=id;}
42     // add a new source file      
43     virtual void AddFile(const Text_t *filname) ;  
44     // read only fraction of data  
45     virtual void SetFraction(Float_t frac=1.){fFrac=frac;}
46     // generate event
47     virtual void Generate();
48     AliGenFLUKAsource & operator=(const AliGenFLUKAsource & rhs);
49  protected:
50
51     Int_t       fIkine;         // Flag to choose type of particles to be read
52     Float_t     fAgeMax;        // Maximum age of particle
53     Float_t     fAddWeight;     // Add weight for neutrons 
54     Float_t     fZshift;        // Shift the Z of impact point by this quantity
55     Float_t     fFrac;          // Fraction of file that corresponds to one event
56     Int_t       fSourceId;      // Source identifier (-1: all sources)
57   
58   
59     const Text_t    *fFileName;          //!Choose the file
60     TChain          *fTreeChain;         //file chaining
61     TTree           *fTreeFluka;         //pointer to the TTree
62 //Declaration of variables read from the file -- TTree type
63     Float_t         fIp;     // Particle type
64     Float_t         fIpp;    // Primary particle type
65     Float_t         fXi;     // x-Impact 
66     Float_t         fYi;     // y-Impact
67     Float_t         fZi;     // z-Impact
68     Float_t         fPx;     // Direction cosine x
69     Float_t         fPy;     // Direction cosine y
70     Float_t         fPz;     // Direction cosine z
71     Float_t         fEkin;   // Kinetic energy
72     Float_t         fZv;     // z-Position of particle vertex
73     Float_t         fRv;     // r-Position of particle vertex
74     Float_t         fItra;   // Primary track number
75     Float_t         fIgas;   // Volume identifier
76     Float_t         fWgt;    // Particle weight
77     Float_t         fEtag;   // Pseudorapidity of primary particle
78     Float_t         fPtg;    // Pt of primary particle
79     Float_t         fAge;    // Time of flight
80
81
82
83     ClassDef(AliGenFLUKAsource,1) //Boundary source
84 };
85 #endif
86
87
88
89
90
91