EMCAL/DCAL Trigger Mapping for Run 2
[u/mrichter/AliRoot.git] / EVGEN / AliGenMUONLMR.h
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};
14   enum CMSEnergies { kCMS2760GeV, kCMS7000GeV, kCMS8000GeV, kCMS5020GeVpPb, kCMS5020GeVPbp, kNCMSEnergies };    
15   AliGenMUONLMR(); 
16   AliGenMUONLMR(AliGenMUONLMR &gen); 
17   AliGenMUONLMR &operator=(const AliGenMUONLMR &gen);  
18   ~AliGenMUONLMR(); 
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);}
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);}
23   virtual void Decay2Body(TParticle *mother);
24   virtual void DalitzDecay(TParticle *mother);
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];} 
29   virtual void SetNMuMin(Int_t nmin) {fNMuMin = nmin;}
30   virtual void GenerateSingleProcess(Int_t whichproc) { fGenSingleProc = whichproc;}
31   virtual void SetScaleMultiplicity(Int_t ipart, Double_t scale) { fScaleMult[ipart] = scale; } 
32   static Double_t RhoLineShapeNew(Double_t *, Double_t *); 
33   virtual void FinishRun(); 
34   virtual TF1* GetRapidity(Int_t iproc) { return fY[iproc]; }
35   virtual TF1* GetPt(Int_t iproc) { return fPt[iproc]; }
36   void SetCMSEnergy(CMSEnergies energy);
37   virtual void SetCMSRapidity(Double_t ycm) { fYCM = ycm; } 
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
41   CMSEnergies fCMSEnergy;          // CMS Energy 
42   Int_t fGenSingleProc;            // flag to generate a single process (1) or the whole cocktail (0)
43   Double_t fYCM;                   // center of mass rapidity (def. 0) 
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
57   ClassDef(AliGenMUONLMR, 1)       // low mass dimuons parametric generator
58 }; 
59
60 #endif
61