]>
Commit | Line | Data |
---|---|---|
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 | ||
11 | class 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 |