62c7ee4d03bf17efb947e4d616a998b80d349afc
[u/mrichter/AliRoot.git] / RALICE / AliCollider.h
1 #ifndef ALICOLLIDER_H
2 #define ALICOLLIDER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id: AliCollider.h,v 1.2 2002/12/02 15:10:37 nick Exp $
7
8 #include "Riostream.h"
9 #include "TPythia6.h"
10 #include "TMCParticle.h"
11 #include "TString.h"
12 #include "TFile.h"
13 #include "TTree.h" 
14
15 #include "AliEvent.h"
16 #include "AliRandom.h"
17  
18 class AliCollider : public TPythia6
19 {
20  public:
21   AliCollider();                                        // Default constructor
22   ~AliCollider();                                       // Default destructor
23   void SetOutputFile(TString name);                     // Initialise the ROOT output data file
24   void SetVertexMode(Int_t mode);                       // Select mode for (sec.) vertex structure creation
25   Int_t GetVertexMode();                                // Provide vertex structure creation mode
26   void SetResolution(Double_t res);                     // Set resolution (in cm) for resolving (sec.) vertices
27   Double_t GetResolution();                             // Provide (sec.) vertex resolving resolution (in cm)
28   void SetRunNumber(Int_t run);                         // Set user defined run number
29   Int_t GetRunNumber();                                 // Provide the user defined run number
30   void SetPrintFreq(Int_t n);                           // Set print frequency for every 'n' events
31   Int_t GetPrintFreq();                                 // Provide the print frequency
32   void Init(char* frame,char* beam,char* target,Float_t win); // Standard Pythia initialisation
33   void Init(char* frame,Int_t zp,Int_t ap,Int_t zt,Int_t at,Float_t win); // Nucl-Nucl initialisation
34   void MakeEvent(Int_t npt,Int_t mlist=-1,Int_t medit=1);// Generate a single event with npt participant nucleons
35   void EndRun();                                        // Properly close all buffers and output file
36   AliEvent* GetEvent();                                 // Provide pointer to the generated event structure
37
38  protected:
39   Int_t fVertexmode;    // The vertex structure creation mode
40   Double_t fResolution; // The resolution (in cm) for resolving (sec.) vertices 
41   Int_t fRunnum;        // The user defined run number
42   Int_t fEventnum;      // The automatically updated event number
43   Int_t fPrintfreq;     // The user selected print frequency
44   char* fFrame;         // The Pythia frame indicator
45   Float_t fWin;         // The Pythia energy indicator
46   Int_t fNucl;          // Flag to denote nucleus-nucleus (1) or standard Pythia (0) running
47   Int_t fZproj;         // Z of the projectile particle
48   Int_t fAproj;         // A of the projectile particle
49   Int_t fZtarg;         // Z of the target particle
50   Int_t fAtarg;         // A of the target particle
51   Float_t fFracpp;      // Fraction of p+p collisions
52   Float_t fFracnp;      // Fraction of n+p collisions
53   Float_t fFracpn;      // Fraction of p+n collisions
54   Float_t fFracnn;      // Fraction of n+n collisions
55   AliRandom fRan;       // Random number generator
56   AliEvent* fEvent;     // The produced event structure
57
58   TFile* fOutFile;      // The user defined output data file 
59   TTree* fOutTree;      // The standard ROOT output tree
60
61   void GetFractions(Float_t zp,Float_t ap,Float_t zt,Float_t at); // Determine various N-N collision fractions
62
63  ClassDef(AliCollider,2) // Pythia based universal physics event generator
64 };
65 #endif