// andreas.morsch@cern.ch
#include "AliGenMC.h"
+#include "AliGenHijingEventHeader.h"
#include <TString.h>
-#include <TArrayI.h>
class THijing;
-class TArrayI;
class TParticle;
class TClonesArray;
class TGraph;
+
class AliGenHijing : public AliGenMC
{
enum {kNoTrigger, kHardProcesses, kDirectPhotons};
public:
AliGenHijing();
AliGenHijing(Int_t npart);
- AliGenHijing(const AliGenHijing &Hijing);
virtual ~AliGenHijing();
virtual void Generate();
virtual void Init();
virtual void SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
virtual void SetReferenceFrame(TString frame="CMS")
{fFrame=frame;}
- virtual void SetProjectile(TString proj="A", Int_t a=208, Int_t z=82)
- {fProjectile = proj; fAProjectile = a; fZProjectile = z;}
- virtual void SetTarget(TString tar="A", Int_t a=208, Int_t z=82)
- {fTarget = tar; fATarget = a; fZTarget = z;}
+
virtual void SetImpactParameterRange(Float_t bmin = 0, Float_t bmax = 15.)
{fMinImpactParam=bmin; fMaxImpactParam=bmax;}
virtual void KeepFullEvent();
virtual void SetSelectAll(Int_t flag=0) {fSelectAll = flag;}
virtual void SetRadiation(Int_t flag=3) {fRadiation = flag;}
virtual void SetSpectators(Int_t spects=1) {fSpectators = spects;}
+ virtual void SetPtHardMin(Float_t ptmin) {fPtHardMin = ptmin;}
+ virtual void SetPtHardMax(Float_t ptmax) {fPtHardMax = ptmax;}
virtual void SetPtJet(Float_t ptmin) {fPtMinJet = ptmin;}
virtual void SetSimpleJets(Int_t flag=0) {fSimpleJet = flag;}
virtual void SetNoGammas(Int_t flag=0) {fNoGammas = flag;}
virtual void SetJetPhiRange(Float_t phimin = -180., Float_t phimax = 180.)
{fPhiMinJet = TMath::Pi()*phimin/180.; fPhiMaxJet = TMath::Pi()*phimax/180.;}
virtual void SetBoostLHC(Int_t flag = 0) {fLHC = flag;}
+ virtual void SetRandomPz(Bool_t flag = 0) {fRandomPz = flag;}
+ virtual void SwitchOffHeavyQuarks(Bool_t flag = kTRUE) {fNoHeavyQuarks = flag;}
+
+
// Getters
- virtual Float_t GetEnergyCMS() {return fEnergyCMS;}
- virtual TString GetReferenceFrame() {return fFrame;}
- virtual void GetProjectile(TString& tar, Int_t& a, Int_t& z)
- {tar = fProjectile; a = fAProjectile; z = fZProjectile;}
- virtual void GetTarget(TString& tar, Int_t& a, Int_t& z)
- {tar = fTarget; a = fATarget; z = fZTarget;}
- virtual void GetImpactParameterRange(Float_t& bmin, Float_t& bmax)
+ virtual TString GetReferenceFrame() const {return fFrame;}
+ virtual void GetImpactParameterRange(Float_t& bmin, Float_t& bmax) const
{bmin = fMinImpactParam; bmax = fMaxImpactParam;}
- virtual Int_t GetJetQuenching() {return fQuench;}
- virtual Int_t GetShadowing() {return fShadowing;}
- virtual Int_t GetTrigger(Int_t flag=kNoTrigger) {return fTrigger;}
- virtual Int_t GetFlavor(Int_t flag=0) {return fFlavor;}
- virtual Int_t GetRadiation(Int_t flag=3) {return fRadiation;}
- virtual Int_t GetSpectators(Int_t spects=1) {return fSpectators;}
- virtual Float_t GetPtJet(Float_t ptmin) {return fPtMinJet;}
- virtual void GetJetEtaRange(Float_t& etamin, Float_t& etamax)
+ virtual Int_t GetJetQuenching() const {return fQuench;}
+ virtual Int_t GetShadowing() const {return fShadowing;}
+ virtual Int_t GetTrigger() const {return fTrigger;}
+ virtual Int_t GetFlavor() const {return fFlavor;}
+ virtual Int_t GetRadiation() const {return fRadiation;}
+ virtual Int_t GetSpectators() const {return fSpectators;}
+ virtual Float_t GetPtHardMin() const {return fPtHardMin;}
+ virtual Float_t GetPtHardMax() const {return fPtHardMax;}
+ virtual Float_t GetPtJet() const {return fPtMinJet;}
+ virtual void GetJetEtaRange(Float_t& etamin, Float_t& etamax) const
{etamin = fEtaMinJet; etamax = fEtaMaxJet;}
- virtual void GetJetPhiRange(Float_t& phimin, Float_t& phimax)
+ virtual void GetJetPhiRange(Float_t& phimin, Float_t& phimax) const
{phimin = fPhiMinJet*180./TMath::Pi(); phimax = fPhiMaxJet*180./TMath::Pi();}
// Physics Routines
- virtual Bool_t ProvidesCollisionGeometry() const {return kTRUE;}
- virtual AliCollisionGeometry* CollisionGeometry() const {return fCollisionGeometry;}
- virtual void EvaluateCrossSections();
- virtual void Boost();
+ virtual Bool_t ProvidesCollisionGeometry() const {return kTRUE;}
+ virtual void EvaluateCrossSections();
virtual TGraph* CrossSection() {return fDsigmaDb;}
virtual TGraph* BinaryCollisions() {return fDnDb;}
virtual Bool_t CheckTrigger();
//
- AliGenHijing & operator=(const AliGenHijing & rhs);
protected:
Bool_t SelectFlavor(Int_t pid);
void MakeHeader();
-
protected:
- TString fFrame; // Reference frame
- TString fProjectile; // Projectile
- TString fTarget; // Target
- Int_t fAProjectile; // Projectile A
- Int_t fZProjectile; // Projectile Z
- Int_t fATarget; // Target A
- Int_t fZTarget; // Target Z
+ TString fFrame; // Reference frame
Float_t fMinImpactParam; // minimum impact parameter
Float_t fMaxImpactParam; // maximum impact parameter
Int_t fKeep; // Flag to keep full event information
Int_t fEvaluate; // Evaluate total and partial cross-sections
Int_t fSelectAll; // Flag to write the full event
Int_t fFlavor; // Selected particle flavor 4: charm+beauty 5: beauty
- Float_t fEnergyCMS; // Centre of mass energy
Float_t fKineBias; // Bias from kinematic selection
Int_t fTrials; // Number of trials
- TArrayI fParentSelect; // Parent particles to be selected
- TArrayI fChildSelect; // Decay products to be selected
Float_t fXsection; // Cross-section
- THijing *fHijing; // Hijing
+ THijing *fHijing; //!Hijing
Float_t fPtHardMin; // lower pT-hard cut
Float_t fPtHardMax; // higher pT-hard cut
Int_t fSpectators; // put spectators on stack
Int_t fRadiation; // Flag to switch on/off initial and final state radiation
Int_t fSimpleJet; // Flag to produce simple tiggered jet topology
Int_t fNoGammas; // Don't write gammas if flag "on"
-
// ZDC proposal (by Chiara) to store num. of SPECTATORS protons and neutrons
- Int_t fSpecn; // Num. of spectator neutrons
- Int_t fSpecp; // Num. of spectator protons
+ Int_t fProjectileSpecn;// Num. of spectator neutrons from projectile nucleus
+ Int_t fProjectileSpecp;// Num. of spectator protons from projectile nucleus
+ Int_t fTargetSpecn; // Num. of spectator neutrons from target nucleus
+ Int_t fTargetSpecp; // Num. of spectator protons from target nucleus
Int_t fLHC; // Assume LHC as lab frame
- TClonesArray* fParticles; // Particle List
+ Bool_t fRandomPz; // Randomise sign of pz event by event
+ Bool_t fNoHeavyQuarks; // If true no heavy quarks are produced
+ Float_t fEventTime; // The event time
+ AliGenHijingEventHeader fHeader; // MC Header
private:
+ AliGenHijing(const AliGenHijing &Hijing);
+ AliGenHijing & operator=(const AliGenHijing & rhs);
+
// adjust the weight from kinematic cuts
void AdjustWeights();
// check seleted daughters
Bool_t DaughtersSelection(TParticle* iparticle);
// check if stable
- Bool_t Stable(TParticle* particle);
+ Bool_t Stable(TParticle* particle) const;
- ClassDef(AliGenHijing,4) // AliGenerator interface to Hijing
+ ClassDef(AliGenHijing, 7) // AliGenerator interface to Hijing
};
#endif