+ void List() const;
+ Double_t GetAngleMaxParam(Int_t i) const {return fAngleMaxParam.At(i) ; }
+ Double_t GetEtaCut() const {return fEtaCut;}
+ Double_t GetPhiEMCALCut(Int_t i) const {return fPhiEMCALCut[i];}
+ TString GetHIJINGFileName() const {return fHIJINGFileName ; }
+ TString GetHistosFileName() const {return fOutputFileName ; }
+ Double_t GetInvMassMaxCut() const {return fInvMassMaxCut ; }
+ Double_t GetInvMassMinCut() const {return fInvMassMinCut ; }
+ Double_t GetPhiMaxCut() const {return fPhiMaxCut ; }
+ Double_t GetPhiMinCut() const {return fPhiMinCut ; }
+ Double_t GetPtCut() const {return fPtCut ; }
+ Double_t GetNeutralPtCut() const {return fNeutralPtCut ; }
+ Double_t GetChargedPtCut() const {return fChargedPtCut ; }
+ Double_t GetPtJetSelectionCut() const {return fPtJetSelectionCut ; }
+ Double_t GetMinDistance() const {return fMinDistance ; }
+ Double_t GetJetRatioMaxCut() const {return fJetRatioMaxCut ; }
+ Double_t GetJetRatioMinCut() const {return fJetRatioMinCut ; }
+ Double_t GetRatioMaxCut() const {return fRatioMaxCut ; }
+ Double_t GetRatioMinCut() const {return fRatioMinCut ; }
+ Int_t GetNEvent() const {return fNEvent ; }
+ Int_t GetNCones() const {return fNCone ; }
+ Int_t GetNPtThres() const {return fNPt ; }
+ Float_t GetCone() const {return fCone ; }
+ Float_t GetPtThreshold() const {return fPtThreshold ; }
+ Float_t GetCones(Int_t i) const {return fCones[i] ; }
+ Float_t GetPtThreshold(Int_t i) const {return fPtThres[i] ; }
+ TString GetConeName(Int_t i) const {return fNameCones[i] ; }
+ TString GetPtThresName(Int_t i) const {return fNamePtThres[i] ; }
+ Bool_t GetTPCCutsLikeEMCAL() const {return fTPCCutsLikeEMCAL ; }
+
+ Bool_t IsAnyConeOrPt() const {return fAnyConeOrPt ; }
+ Bool_t IsFastReconstruction() const {return fOptFast ; }
+ Bool_t IsHIJING() const {return fHIJING ; }
+ Bool_t IsOnlyCharged() const {return fOnlyCharged ; }
+
+ void Plot(TString what="all", Option_t *option="") const;
+ void Print(char * opt);
+
+ void SetAngleMaxParam(Int_t i, Double_t par)
+ {fAngleMaxParam.AddAt(par,i) ; }
+ void SetAnyConeOrPt(Bool_t any){fAnyConeOrPt = any ;}
+ void SetEtaCut(Double_t etacut) {fEtaCut = etacut ; }
+ void SetPhiEMCALCut(Double_t phi, Int_t i){fPhiEMCALCut[i] = phi; }
+ void SetFastReconstruction(Bool_t fast){fOptFast = fast ; }
+ void SetHIJING(Bool_t opt){fHIJING = opt; }
+ void SetHIJINGFileName(TString file){fHIJINGFileName = file ; }
+ void SetNCones(Int_t n){fNCone = n ; }
+ void SetNPtThresholds(Int_t n){fNPt = n ; }
+ void SetCones(Int_t i, Float_t cone, TString sc)
+ {fCones[i] = cone ; fNameCones[i] = sc; };
+ void SetCone(Float_t cone)
+ {fCone = cone; }
+ void SetPtThreshold(Float_t pt){fPtThreshold = pt; };
+ void SetPtThresholds(Int_t i,Float_t pt, TString spt){fPtThres[i] = pt ;
+ fNamePtThres[i] = spt; };
+ void SetOnlyCharged(Bool_t opt){fOnlyCharged = opt; }
+ void SetPythiaFileName(TString file){fInputFileName = file ; }
+ void SetHistosFileName(TString file){fOutputFileName = file ; }
+ void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
+ {fInvMassMaxCut =invmassmax; fInvMassMinCut =invmassmin;}
+ void SetJetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
+ {fJetRatioMaxCut =ratiomax; fJetRatioMinCut = ratiomin ; }
+ void SetJetTPCRatioCutRange(Double_t ratiomin, Double_t ratiomax)
+ {fJetTPCRatioMaxCut =ratiomax; fJetTPCRatioMinCut = ratiomin ; }
+ void SetNEvent(Int_t n){fNEvent = n ; }
+ void SetMinDistance(Double_t min){fMinDistance = min ; }
+ void SetPhiCutRange(Double_t phimin, Double_t phimax)
+ {fPhiMaxCut =phimax; fPhiMinCut =phimin;}
+ void SetPtCut(Double_t ptcut)
+ {fPtCut =ptcut;}
+ void SetNeutralPtCut(Double_t ptcut)
+ {fNeutralPtCut =ptcut;}
+ void SetChargedPtCut(Double_t ptcut)
+ {fChargedPtCut =ptcut;}
+ void SetPtJetSelectionCut(Double_t cut){fPtJetSelectionCut = cut; }
+ void SetJetSelection(Bool_t select){ fSelect= select ; }
+ void SetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
+ {fRatioMaxCut = ratiomax; fRatioMinCut = ratiomin;}
+ void SetTPCCutsLikeEMCAL(Bool_t b){ fTPCCutsLikeEMCAL= b ; }
+
+
+ private:
+// void AddHIJINGToList(TList & particleList, TList & particleListCh,
+// TList & particleListNe, const Int_t iEvent,
+// const TLorentzVector gamma, Double_t & rot );
+
+ void AddHIJINGToList(Int_t iEvent, TClonesArray * particleList,
+ TClonesArray * plCh, TClonesArray * plNe,
+ TClonesArray * plNePHOS, const AliPHOSGeometry * geom);
+
+
+ Double_t CalculateJetRatioLimit(const Double_t ptg, const Double_t *param,
+ const Double_t *x);
+
+ void CreateParticleList(Int_t iEvent, TClonesArray * particleList,
+ TClonesArray * plCh, TClonesArray * plNe,
+ TClonesArray * plNePHOS,
+ const AliPHOSGeometry * geom );
+
+ void FillJetHistos(TClonesArray * pl, Double_t ptg, TString conf, TString type);
+
+ void FillJetHistosAnyConeOrPt( TClonesArray * pl, Double_t ptg, TString conf,
+ TString type, TString cone, TString ptcut);
+ Bool_t IsAngleInWindow(const Float_t angle, const Float_t e);
+ Bool_t IsJetSelected(const Double_t ptg, const Double_t ptjet,
+ const TString type);
+
+ void MakeJet(TClonesArray * particleList,
+ Double_t ptg, Double_t phig,
+ Double_t ptl, Double_t phil, Double_t etal,
+ TString type, TLorentzVector & jet);
+ void MakeJetAnyConeOrPt(TClonesArray * particleList, Double_t ptg,
+ Double_t phig, Double_t ptl, Double_t phil,
+ Double_t etal, TString type);
+ void GetGammaJet(TClonesArray * pl, Double_t &pt,
+ Double_t &phi, Double_t &eta, Bool_t &Is) const;
+
+ void GetLeadingCharge(TClonesArray * pl,
+ Double_t ptg, Double_t phig,
+ Double_t &pt, Double_t &eta, Double_t &phi) const ;
+ void GetLeadingPi0 (TClonesArray * pl,
+ Double_t ptg, Double_t phig,
+ Double_t &pt, Double_t &eta, Double_t &phi) ;
+
+ void InitParameters();
+ Double_t MakeEnergy(const Double_t energy) ;
+ void MakeHistos() ;
+ void MakePhoton(TLorentzVector & particle) ;
+ TVector3 MakePosition(const Double_t energy, const TVector3 pos) ;
+