X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PYTHIA6%2FAliGenPythia.h;h=460c28266c7777c692e2cd76ab13cc4cea357306;hb=6253e09bd9e26c4e080b0f98958ac06b73ca3e55;hp=d1a4ffc43c287f905bf1a5004d6bc2b4f407f291;hpb=7ea3ea5b6182fb82ef190b8d8f62354a1f35ed2f;p=u%2Fmrichter%2FAliRoot.git diff --git a/PYTHIA6/AliGenPythia.h b/PYTHIA6/AliGenPythia.h index d1a4ffc43c2..460c28266c7 100644 --- a/PYTHIA6/AliGenPythia.h +++ b/PYTHIA6/AliGenPythia.h @@ -3,6 +3,7 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ + /* $Id$ */ // @@ -21,6 +22,9 @@ class AliPythia; class TParticle; class AliGenPythiaEventHeader; +class AliGenEventHeader; +class AliStack; +class AliRunLoader; class AliGenPythia : public AliGenMC { @@ -32,102 +36,151 @@ class AliGenPythia : public AliGenMC AliGenPythia(); AliGenPythia(Int_t npart); - AliGenPythia(const AliGenPythia &Pythia); virtual ~AliGenPythia(); virtual void Generate(); virtual void Init(); - // set a cut on the Z coord. of the primary vertex (cm) - // + // Range of events to be printed virtual void SetEventListRange(Int_t eventFirst=-1, Int_t eventLast=-1); - // select process type + // Select process type virtual void SetProcess(Process_t proc = kPyCharm) {fProcess = proc;} - // select structure function - virtual void SetStrucFunc(StrucFunc_t func = kGRVHO) {fStrucFunc = func;} - // select pt of hard scattering + // Select structure function + virtual void SetStrucFunc(StrucFunc_t func = kCTEQ5L) {fStrucFunc = func;} + // Select pt of hard scattering virtual void SetPtHard(Float_t ptmin = 0, Float_t ptmax = 1.e10) {fPtHardMin = ptmin; fPtHardMax = ptmax; } + // y of hard scattering virtual void SetYHard(Float_t ymin = -1.e10, Float_t ymax = 1.e10) {fYHardMin = ymin; fYHardMax = ymax; } // Set initial and final state gluon radiation virtual void SetGluonRadiation(Int_t iIn, Int_t iFin) {fGinit = iIn; fGfinal = iFin;} + // Intrinsic kT virtual void SetPtKick(Float_t kt = 1.) {fPtKick = kt;} - // set centre of mass energy + // Use the Pythia 6.3 new multiple interations scenario + virtual void UseNewMultipleInteractionsScenario() {fNewMIS = kTRUE;} + // Switch off heavy flavors + virtual void SwitchHFOff() {fHFoff = kTRUE;} + // Set centre of mass energy virtual void SetEnergyCMS(Float_t energy = 5500) {fEnergyCMS = energy;} - // treat protons as inside nuclei + // Treat protons as inside nuclei with mass numbers a1 and a2 virtual void SetNuclei(Int_t a1, Int_t a2); + // + // Trigger options + // + // Energy range for jet trigger virtual void SetJetEtRange(Float_t etmin = 0., Float_t etmax = 1.e4) {fEtMinJet = etmin; fEtMaxJet = etmax;} + // Eta range for jet trigger virtual void SetJetEtaRange(Float_t etamin = -20., Float_t etamax = 20.) {fEtaMinJet = etamin; fEtaMaxJet = etamax;} - virtual void SetJetReconstructionMode(Int_t mode = kCell) {fJetReconstruction = mode;} + // Phi range for jet trigger virtual void SetJetPhiRange(Float_t phimin = 0., Float_t phimax = 360.) {fPhiMinJet = TMath::Pi()*phimin/180.; fPhiMaxJet = TMath::Pi()*phimax/180.;} + // Jet reconstruction mode; default is cone algorithm + virtual void SetJetReconstructionMode(Int_t mode = kCell) {fJetReconstruction = mode;} + // Eta range for gamma trigger virtual void SetGammaEtaRange(Float_t etamin = -20., Float_t etamax = 20.) {fEtaMinGamma = etamin; fEtaMaxGamma = etamax;} + // Phi range for gamma trigger virtual void SetGammaPhiRange(Float_t phimin = 0., Float_t phimax = 360.) {fPhiMinGamma = TMath::Pi()*phimin/180.; fPhiMaxGamma = TMath::Pi()*phimax/180.;} + // Select jets with fragmentation photon or pi0 going to PHOS or EMCAL + virtual void SetFragPhotonInCalo(Bool_t b) {fFragPhotonInCalo = b;} + virtual void SetPi0InCalo (Bool_t b) {fPi0InCalo = b;} + virtual void SetPhotonInCalo(Bool_t b) {fPhotonInCalo = b;} + virtual void SetCheckPHOS (Bool_t b) {fCheckPHOS = b;} + virtual void SetCheckEMCAL(Bool_t b) {fCheckEMCAL = b;} + virtual void SetFragPhotonInEMCAL(Bool_t b) {fCheckEMCAL = b; fFragPhotonInCalo = b;} + virtual void SetFragPhotonInPHOS(Bool_t b) {fCheckPHOS = b; fFragPhotonInCalo = b;} + virtual void SetPi0InEMCAL(Bool_t b) {fCheckEMCAL = b; fPi0InCalo = b;} + virtual void SetPi0InPHOS(Bool_t b) {fCheckPHOS = b; fPi0InCalo = b;} + virtual void SetPhotonInEMCAL(Bool_t b) {fCheckEMCAL = b; fPhotonInCalo = b;} + virtual void SetPhotonInPHOS(Bool_t b) {fCheckPHOS = b; fPhotonInCalo = b;} + virtual void SetPhotonInPHOSeta(Bool_t b) {fCheckPHOSeta = b; fPhotonInCalo = b;} + virtual void SetFragPhotonOrPi0MinPt(Float_t pt) {fFragPhotonOrPi0MinPt = pt;} + virtual void SetPhotonMinPt(Float_t pt) {fPhotonMinPt = pt;} + // Trigger and rotate event + void RotatePhi(Int_t iphcand, Bool_t& okdd); + // Trigger on a single particle + virtual void SetTriggerParticle(Int_t particle = 0, Float_t etamax = 0.9) + {fTriggerParticle = particle; fTriggerEta = etamax;} + // + // Heavy flavor options + // // Set option for feed down from higher family virtual void SetFeedDownHigherFamily(Bool_t opt) { - fFeedDownOpt = opt; + fFeedDownOpt = opt; } // Set option for selecting particles kept in stack according to flavor // or to parent selection virtual void SetStackFillOpt(StackFillOpt_t opt) { - fStackFillOpt = opt; + fStackFillOpt = opt; } // Set fragmentation option - virtual void SetFragmentation(const Bool_t opt) { - fFragmentation = opt; + virtual void SetFragmentation(Bool_t opt) { + fFragmentation = opt; } // Set counting mode - virtual void SetCountMode(const CountMode_t mode) { - fCountMode = mode; + virtual void SetCountMode(CountMode_t mode) { + fCountMode = mode; } - + // + // Quenching + // + // Set quenching mode 0 = no, 1 = AM, 2 = IL virtual void SetQuench(Int_t flag = 0) {fQuench = flag;} - - + virtual void SetHadronisation(Int_t flag = 1) {fHadronisation = flag;} + virtual void SetReadFromFile(const Text_t *filname) {fFileName = filname; fReadFromFile = 1;} + + // + // Pile-up + // + // Get interaction rate for pileup studies + virtual void SetInteractionRate(Float_t rate,Float_t timewindow = 90.e-6); + virtual Float_t GetInteractionRate() const {return fInteractionRate;} // get cross section of process virtual Float_t GetXsection() const {return fXsection;} // get triggered jets - void GetJets(Int_t& njets, Int_t& ntrig, Float_t[4][10]); + void GetJets(Int_t& njets, Int_t& ntrig, Float_t jets[4][10]); void RecJetsUA1(Int_t& njets, Float_t jets[4][50]); void SetPycellParameters(Float_t etamax = 2., Int_t neta = 274, Int_t nphi = 432, Float_t thresh = 0., Float_t etseed = 4., Float_t minet = 10., Float_t r = 1.); - void LoadEvent(); + void LoadEvent(AliStack* stack, Int_t flag = 0, Int_t reHadr = 0); // Getters - virtual Process_t GetProcess() {return fProcess;} - virtual StrucFunc_t GetStrucFunc() {return fStrucFunc;} - virtual void GetPtHard(Float_t& ptmin, Float_t& ptmax) - {ptmin = fPtHardMin; ptmax = fPtHardMax = ptmax;} - virtual Float_t GetEnergyCMS() {return fEnergyCMS;} - virtual void GetNuclei(Int_t& a1, Int_t& a2) + virtual Process_t GetProcess() const {return fProcess;} + virtual StrucFunc_t GetStrucFunc() const {return fStrucFunc;} + virtual void GetPtHard(Float_t& ptmin, Float_t& ptmax) const + {ptmin = fPtHardMin; ptmax = fPtHardMax;} + virtual Float_t GetEnergyCMS() const {return fEnergyCMS;} + virtual void GetNuclei(Int_t& a1, Int_t& a2) const {a1 = fAProjectile; a2 = fATarget;} - virtual void GetJetEtRange(Float_t& etamin, Float_t& etamax) + virtual void GetJetEtRange(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();} - virtual void GetGammaEtaRange(Float_t& etamin, Float_t& etamax) + virtual void GetGammaEtaRange(Float_t& etamin, Float_t& etamax) const {etamin = fEtaMinGamma; etamax = fEtaMaxGamma;} - virtual void GetGammaPhiRange(Float_t& phimin, Float_t& phimax) + virtual void GetGammaPhiRange(Float_t& phimin, Float_t& phimax) const {phimin = fPhiMinGamma*180./TMath::Pi(); phimax = fPhiMaxGamma*180./TMath::Pi();} // + Bool_t IsInEMCAL(Float_t phi, Float_t eta); + Bool_t IsInPHOS(Float_t phi, Float_t eta); + // virtual void FinishRun(); Bool_t CheckTrigger(TParticle* jet1, TParticle* jet2); - - // Assignment Operator - AliGenPythia & operator=(const AliGenPythia & rhs); + //Used in some processes to selected child properties + Bool_t CheckKinematicsOnChild(); + void GetSubEventTime(); + protected: // adjust the weight from kinematic cuts - void AdjustWeights(); - Int_t GenerateMB(); - void MakeHeader(); - - + void AdjustWeights() const; + Int_t GenerateMB(); + void MakeHeader(); + void GeneratePileup(); Process_t fProcess; //Process type StrucFunc_t fStrucFunc; //Structure Function Float_t fEnergyCMS; //Centre of mass energy @@ -137,6 +190,11 @@ class AliGenPythia : public AliGenMC Float_t fQ; //Mean Q Float_t fX1; //Mean x1 Float_t fX2; //Mean x2 + Float_t fEventTime; //Time of the subevent + Float_t fInteractionRate; //Interaction rate (set by user) + Float_t fTimeWindow; //Time window for pileup events (set by user) + Int_t fCurSubEvent; //Index of the current sub-event + TArrayF *fEventsTime; //Subevents time for pileup Int_t fNev; //Number of events Int_t fFlavorSelect; //Heavy Flavor Selection Float_t fXsection; //Cross-section @@ -147,6 +205,9 @@ class AliGenPythia : public AliGenMC Float_t fYHardMax; //higher y-hard cut Int_t fGinit; //initial state gluon radiation Int_t fGfinal; //final state gluon radiation + Int_t fHadronisation; //hadronisation + Int_t fNpartons; //Number of partons before hadronisation + Int_t fReadFromFile; //read partons from file Int_t fQuench; //Flag for quenching Float_t fPtKick; //Transverse momentum kick Bool_t fFullEvent; //!Write Full event if true @@ -176,20 +237,47 @@ class AliGenPythia : public AliGenMC // parents and their decays Bool_t fFeedDownOpt; // Option to set feed down from higher // quark families (e.g. b->c) - Bool_t fFragmentation; // Option to activate fragmentation by Pythia - Bool_t fSetNuclei; // Flag indicating that SetNuclei has been called - // - - CountMode_t fCountMode; // Options for counting when the event will be finished. - AliGenPythiaEventHeader* fHeader; //! Event header - + Bool_t fFragmentation; // Option to activate fragmentation by Pythia + Bool_t fSetNuclei; // Flag indicating that SetNuclei has been called + Bool_t fNewMIS; // Flag for the new multipple interactions scenario + Bool_t fHFoff; // Flag for switching heafy flavor production off + Int_t fTriggerParticle; // Trigger on this particle ... + Float_t fTriggerEta; // .. within |eta| < fTriggerEta + CountMode_t fCountMode; // Options for counting when the event will be finished. // fCountMode = kCountAll --> All particles that end up in the // stack are counted // fCountMode = kCountParents --> Only selected parents are counted // fCountMode = kCountTrackabless --> Only particles flagged for tracking // are counted // - ClassDef(AliGenPythia,5) // AliGenerator interface to Pythia + // + + AliGenPythiaEventHeader* fHeader; //! Event header + AliRunLoader* fRL; //! Run Loader + const Text_t* fFileName; //! Name of file to read from + + + Bool_t fFragPhotonInCalo; // Option to ask for Fragmentation Photon in calorimeters acceptance + Bool_t fPi0InCalo; // Option to ask for Pi0 in calorimeters acceptance + Bool_t fPhotonInCalo; // Option to ask for Decay Photon in calorimeter acceptance + Bool_t fCheckEMCAL; // Option to ask for FragPhoton or Pi0 in calorimeters EMCAL acceptance + Bool_t fCheckPHOS; // Option to ask for FragPhoton or Pi0 in calorimeters PHOS acceptance + Bool_t fCheckPHOSeta; // Option to ask for PHOS eta acceptance + Float_t fFragPhotonOrPi0MinPt; // Minimum momentum of Fragmentation Photon or Pi0 + Float_t fPhotonMinPt; // Minimum momentum of Photon + //Calorimeters eta-phi acceptance + Float_t fPHOSMinPhi; // Minimum phi PHOS + Float_t fPHOSMaxPhi; // Maximum phi PHOS + Float_t fPHOSEta; // Minimum eta PHOS + Float_t fEMCALMinPhi; // Minimum phi EMCAL + Float_t fEMCALMaxPhi; // Maximum phi EMCAL + Float_t fEMCALEta; // Maximum eta EMCAL + + private: + AliGenPythia(const AliGenPythia &Pythia); + AliGenPythia & operator=(const AliGenPythia & rhs); + + ClassDef(AliGenPythia,6) // AliGenerator interface to Pythia }; #endif