--- /dev/null
+#ifndef ALIGENPAIRFLAT_H
+#define ALIGENPAIRFLAT_H
+
+
+// Generator for particle pairs in a preset
+// kinematic range
+// ranges can be set for invariant mass, pair pT, pair rapidity
+// and pair azimuth
+
+// Comments and suggestions: markus.konrad.kohler@cern.ch
+
+
+#include "AliGenerator.h"
+
+class TF1;
+
+class AliGenPairFlat : public AliGenerator
+{
+ public:
+ AliGenPairFlat();
+ virtual ~AliGenPairFlat(){ }
+ virtual void Generate();
+ virtual void Init();
+
+ virtual void SetPairNPart(Int_t npart) {fPairNpart=npart;}
+ virtual void SetPairYRange(Float_t Ymin, Float_t Ymax)
+ {fPairYMin = Ymin; fPairYMax = Ymax;}
+ virtual void SetPairPhiRange(Float_t phimin, Float_t phimax)
+ {fPairPhiMin = phimin; fPairPhiMax = phimax;}
+ virtual void SetPairPtRange(Float_t ptmin, Float_t ptmax)
+ {fPairPtMin = ptmin; fPairPtMax = ptmax;}
+ virtual void SetPairMassRange(Float_t massmin, Float_t massmax)
+ {fPairMassMin = massmin; fPairMassMax = massmax;}
+ virtual void SetLegPdg(Int_t pdg1, Int_t pdg2)
+ {fLegPdg1 = pdg1; fLegPdg2 = pdg2;}
+ virtual void SetPolarization(Float_t Alpha)
+ {fAlpha = Alpha;}
+ void SetDebug(Int_t debug) {fDebug=debug;}
+
+protected:
+
+ Int_t fPairNpart; //Number of generated pairs
+ Float_t fPairYMin; // Minimum eta
+ Float_t fPairYMax; // Maximum eta
+ Float_t fPairPhiMin; // Minimum phi
+ Float_t fPairPhiMax; // Maximum phi
+ Float_t fPairPtMin; // Minimum pt
+ Float_t fPairPtMax; // Maximum pt
+ Float_t fPairMassMin; // Minimum mass
+ Float_t fPairMassMax; // Maximum mass
+ Int_t fLegPdg1; // pdg code of first daughter
+ Int_t fLegPdg2; // pdg code of second daughter
+ Float_t fAlpha; // Polarization factor
+ Int_t fDebug; // debug level
+
+ Bool_t Decay(TLorentzVector mother, TLorentzVector &dau1, TLorentzVector &dau2 , TF1 fPol);
+
+ ClassDef(AliGenPairFlat,1) // Flat random pair generator
+};
+
+#endif