Moving required CMake version from 2.8.4 to 2.8.8
[u/mrichter/AliRoot.git] / EVGEN / AliGenMUONLMR.h
CommitLineData
368fc61e 1#ifndef AliGenMUONLMR_h
2#define AliGenMUONLMR_h
3
4#include <TH1F.h>
5#include <TH1D.h>
6#include <TF1.h>
7#include <TParticle.h>
8#include <TLorentzVector.h>
9#include "AliGenMC.h"
10
11class AliGenMUONLMR : public AliGenMC {
12 public:
13 enum parttype_t {kPionLMR, kKaonLMR, kEtaLMR, kRhoLMR, kOmegaLMR, kPhiLMR, kEtaPrimeLMR};
1f18dff1 14 enum CMSEnergies { kCMS2760GeV, kCMS7000GeV, kCMS8000GeV, kCMS5020GeVpPb, kCMS5020GeVPbp, kNCMSEnergies };
c279681a 15 AliGenMUONLMR();
35e2c739 16 AliGenMUONLMR(AliGenMUONLMR &gen);
17 AliGenMUONLMR &operator=(const AliGenMUONLMR &gen);
368fc61e 18 ~AliGenMUONLMR();
35e2c739 19 static Double_t PtDistr(Double_t *x, Double_t *par);
20 static Double_t YDistr(Double_t *x, Double_t *par);
21 virtual void SetPtParams(Int_t iproc, Double_t p1, Double_t p2, Double_t p3) {fPt[iproc]->SetParameters(p1,p2,p3);}
0d19baad 22 virtual void SetYParams(Int_t iproc, Double_t p1, Double_t p2, Double_t p3, Double_t ycm=0) {fY[iproc]->SetParameters(p1,p2,p3,ycm);}
35e2c739 23 virtual void Decay2Body(TParticle *mother);
24 virtual void DalitzDecay(TParticle *mother);
368fc61e 25 virtual void DecayPiK(TParticle *mother, Bool_t &hadDecayed);
26 virtual Double_t FormFactor(Double_t q2, Int_t decay);
27 virtual void Generate();
28 virtual TParticle* GetMuon(Int_t i) {return fMu[i];}
35e2c739 29 virtual void SetNMuMin(Int_t nmin) {fNMuMin = nmin;}
368fc61e 30 virtual void GenerateSingleProcess(Int_t whichproc) { fGenSingleProc = whichproc;}
31 virtual void SetScaleMultiplicity(Int_t ipart, Double_t scale) { fScaleMult[ipart] = scale; }
35e2c739 32 static Double_t RhoLineShapeNew(Double_t *, Double_t *);
368fc61e 33 virtual void FinishRun();
35e2c739 34 virtual TF1* GetRapidity(Int_t iproc) { return fY[iproc]; }
35 virtual TF1* GetPt(Int_t iproc) { return fPt[iproc]; }
c279681a 36 void SetCMSEnergy(CMSEnergies energy);
0d19baad 37 virtual void SetCMSRapidity(Double_t ycm) { fYCM = ycm; }
368fc61e 38 private:
39 static const Int_t fgkNpart = 7; // number of particles to be generated
40 Int_t fNMuMin; // min. number of muons to accept the event for writing
c279681a 41 CMSEnergies fCMSEnergy; // CMS Energy
368fc61e 42 Int_t fGenSingleProc; // flag to generate a single process (1) or the whole cocktail (0)
0d19baad 43 Double_t fYCM; // center of mass rapidity (def. 0)
368fc61e 44 Int_t fPDG[7]; // pdg code of particle to be generated
45 Double_t fScaleMult[7]; // multiplicity scaling factor (w.r.t. pythia@7TeV)
46 TF1 *fPt[7]; // pt distribution
47 TF1 *fY[7]; // rapidity distribution
48 TF1 *fMult[7]; // multiplicity distribution
49 TF1 *fDecay[2]; // fDecay[0] = pion, fDecay[1] = kaon
50 TH1F *fDalitz[3]; // Dalitz decay form factor for eta, omega, etaprime
51 TF1 *fCosTheta; // function for polarized theta distributions
52 TF1 *fRhoLineShape; // rho line shape
53 TParticle* fParticle[7]; // TPaticle object for the particles to be generated
54 TParticle* fMu[2]; // fMu[0] = mu+ fMu[1] = mu-
55 TH1D *fHMultMu; // muon multiplicity
56 TH1D *fHNProc; // number of events generated per process
35e2c739 57 ClassDef(AliGenMUONLMR, 1) // low mass dimuons parametric generator
368fc61e 58};
59
60#endif
c279681a 61