16-feb-2005 NvE Support for user selectable split level and buffer size of the output...
[u/mrichter/AliRoot.git] / RALICE / AliCollider.h
fdbea0ce 1#ifndef ALICOLLIDER_H
45575004 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
fdbea0ce 5
965bd237 6// $Id: AliCollider.h,v 1.9 2004/05/04 15:33:04 nick Exp $
fdbea0ce 7
fdbea0ce 8#include "TPythia6.h"
fdbea0ce 9#include "TString.h"
10#include "TFile.h"
47dddbe4 11#include "TTree.h"
12#include "TArrayI.h"
fdbea0ce 13
14#include "AliEvent.h"
15#include "AliRandom.h"
17class AliCollider : public TPythia6
19 public:
20 AliCollider(); // Default constructor
c72198f1 21 virtual ~AliCollider(); // Default destructor
fdbea0ce 22 void SetOutputFile(TString name); // Initialise the ROOT output data file
23 void SetVertexMode(Int_t mode); // Select mode for (sec.) vertex structure creation
261c0caf 24 Int_t GetVertexMode() const; // Provide vertex structure creation mode
fdbea0ce 25 void SetResolution(Double_t res); // Set resolution (in cm) for resolving (sec.) vertices
261c0caf 26 Double_t GetResolution() const; // Provide (sec.) vertex resolving resolution (in cm)
fdbea0ce 27 void SetRunNumber(Int_t run); // Set user defined run number
261c0caf 28 Int_t GetRunNumber() const; // Provide the user defined run number
fdbea0ce 29 void SetPrintFreq(Int_t n); // Set print frequency for every 'n' events
261c0caf 30 Int_t GetPrintFreq() const; // Provide the print frequency
fdbea0ce 31 void Init(char* frame,char* beam,char* target,Float_t win); // Standard Pythia initialisation
32 void Init(char* frame,Int_t zp,Int_t ap,Int_t zt,Int_t at,Float_t win); // Nucl-Nucl initialisation
5f25234b 33 void SetStable(Int_t id,Int_t mode=1); // Declare a certain particle as stable or not
47dddbe4 34 void SelectEvent(Int_t id); // Select only events containing specified particles
261c0caf 35 Int_t GetSelectionFlag() const; // Return the selection flag for this event
1c01b4f8 36 void MakeEvent(Int_t npt=0,Int_t mlist=-1,Int_t medit=1);// Generate a single event with npt participant nucleons
fdbea0ce 37 void EndRun(); // Properly close all buffers and output file
261c0caf 38 AliEvent* GetEvent(Int_t select=0) const; // Provide pointer to the generated event structure
47dddbe4 39 void SetSpectatorPmin(Float_t pmin); // Set minimal momentum for spectator track to be stored
261c0caf 40 Float_t GetSpectatorPmin() const; // Provide the minimal momentum for spectator tracks
965bd237 41 void SetUserControl(Int_t flag); // Selection of full user control w.r.t. MC parameters.
42 Int_t GetUserControl() const; // Provide the value of the user control flag.
43 void SetElastic(Int_t flag); // Selection flag for elastic and diffractive processes.
44 Int_t GetElastic() const; // Provide the value of the elastic selection flag.
fdbea0ce 45
46 protected:
47 Int_t fVertexmode; // The vertex structure creation mode
48 Double_t fResolution; // The resolution (in cm) for resolving (sec.) vertices
49 Int_t fRunnum; // The user defined run number
50 Int_t fEventnum; // The automatically updated event number
51 Int_t fPrintfreq; // The user selected print frequency
52 char* fFrame; // The Pythia frame indicator
53 Float_t fWin; // The Pythia energy indicator
54 Int_t fNucl; // Flag to denote nucleus-nucleus (1) or standard Pythia (0) running
55 Int_t fZproj; // Z of the projectile particle
56 Int_t fAproj; // A of the projectile particle
57 Int_t fZtarg; // Z of the target particle
58 Int_t fAtarg; // A of the target particle
59 Float_t fFracpp; // Fraction of p+p collisions
60 Float_t fFracnp; // Fraction of n+p collisions
61 Float_t fFracpn; // Fraction of p+n collisions
62 Float_t fFracnn; // Fraction of n+n collisions
63 AliRandom fRan; // Random number generator
64 AliEvent* fEvent; // The produced event structure
47dddbe4 65 Float_t fSpecpmin; // The minimal momentum for spectator tracks to be stored
965bd237 66 Int_t fUserctrl; // Flag to denote the user control selection w.r.t. MC parameters
67 Int_t fElastic; // Flag to denote inclusion of elastic and difractive processes.
fdbea0ce 68
69 TFile* fOutFile; // The user defined output data file
70 TTree* fOutTree; // The standard ROOT output tree
47dddbe4 72 TArrayI* fSelections; // The particle KC codes for event selection
73 Int_t fSelect; // Flag to indicate whether the total event is selected (1) or not (0)
75 Int_t IsSelected(); // Check whether (sub)event passed the selection criteria
fdbea0ce 76 void GetFractions(Float_t zp,Float_t ap,Float_t zt,Float_t at); // Determine various N-N collision fractions
6aff9852 77 TString GetPyname(Int_t kf); // Provide the correctly truncated Pythia particle name for PDG code kf
fdbea0ce 78
261c0caf 79 ClassDef(AliCollider,8) // Pythia based universal physics event generator
fdbea0ce 80};