#ifndef ALIGENCORRHF_H
#define ALIGENCORRHF_H
#include "AliGenMC.h"
class AliPythia;
class TParticle;
class TH2F;
class TFile;
class TString;
class TClonesArray;
class AliGenCorrHF : public AliGenMC
{
public:
AliGenCorrHF();
AliGenCorrHF(Int_t npart, Int_t idquark, Int_t energy);
AliGenCorrHF(char* tname, Int_t npart, Int_t idquark, Int_t energy);
virtual ~AliGenCorrHF();
virtual void Generate();
virtual void Init();
virtual void SetDecayer(AliDecayer* decayer) {fDecayer = decayer;}
static void IpCharm(TH2F *hProbHH, Int_t &pdg3, Int_t &pdg4);
static void IpBeauty(TH2F *hProbHH, Int_t &pdg3, Int_t &pdg4);
Double_t ComputeIntegral(TFile* fG);
static void GetQuarkPair(TFile* fG, Double_t* fInt, Double_t &y1, Double_t &y2, Double_t &pt1, Double_t &pt2, Double_t &dphi);
static void GetHadronPair(TFile* fG, Int_t idq, Double_t y1, Double_t y2, Double_t pt1, Double_t pt2, Int_t &id3, Int_t &id4, Double_t &pz3, Double_t &pz4, Double_t &pt3, Double_t &pt4);
void LoadTracks(Int_t iquark, Float_t *pq, Int_t iPart,
Float_t *p, Int_t np, TClonesArray* particles,
Float_t *origine0, Float_t *polar, Float_t wgtp,
Float_t wgtch, Int_t &nt, Int_t ncsel, Int_t *pSelected,
Int_t *trackIt);
void SetSelectAll(Bool_t selectall) {fSelectAll = selectall;}
protected:
TString fFileName;
TFile* fFile;
Int_t fQuark;
Int_t fEnergy;
Float_t fBias;
Int_t fTrials;
Bool_t fSelectAll;
AliDecayer* fDecayer;
private:
AliGenCorrHF(const AliGenCorrHF &CorrHF);
AliGenCorrHF & operator=(const AliGenCorrHF & rhs);
Double_t* fgIntegral;
static Int_t fgnptbins;
static Double_t fgdph[19];
static Double_t fgy[31];
static Double_t fgpt[51];
static Double_t fgptbmin[12];
static Double_t fgptbmax[12];
ClassDef(AliGenCorrHF,1)
};
#endif