#ifndef ALIJETMODELBASETASK_H
#define ALIJETMODELBASETASK_H
class TClonesArray;
class AliEMCALGeometry;
class AliVCluster;
class AliPicoTrack;
class AliVCaloCells;
class AliAODMCParticle;
class AliNamedArrayI;
class TF2;
class AliPythiaInfo;
#include <TH1F.h>
#include <TF1.h>
#include "AliAnalysisTaskSE.h"
class AliJetModelBaseTask : public AliAnalysisTaskSE {
public:
AliJetModelBaseTask();
AliJetModelBaseTask(const char *name, Bool_t drawqa=kFALSE);
virtual ~AliJetModelBaseTask();
void SetEtaRange(Float_t min, Float_t max) { fEtaMin = min; fEtaMax = max; }
void SetPhiRange(Float_t min, Float_t max) { fPhiMin = min; fPhiMax = max; }
void SetPtRange(Float_t min, Float_t max) { fPtMin = min; fPtMax = max; }
void SetPtSpectrum(TH1F *f) { fPtSpectrum = f; }
void SetPtSpectrum(TF1 *f) { fPtSpectrum = new TH1F("ptSpectrum","ptSpectrum",1000,f->GetXmin(),f->GetXmax());
fPtSpectrum->Add(f); }
void SetPtPhiEvPlDistribution(TF2 *f) { fPtPhiEvPlDistribution = f; }
void SetDensitySpectrum(TH1F *f) { fDensitySpectrum = f; }
void SetDensitySpectrum(TF1 *f) { fDensitySpectrum = new TH1F("densitypectrum","densitypectrum",1000,f->GetXmin(),f->GetXmax());
fDensitySpectrum->Add(f); }
void SetDifferentialV2(TF1* f) { fDifferentialV2 = f; }
void SetAddV2(Bool_t b) { fAddV2 = b; }
void SetAddFlowFluctuations(Bool_t b) { fFlowFluctuations = b;}
void SetMC(Bool_t a) { fIsMC = a ; }
void SetCopyArray(Bool_t copy) { fCopyArray = copy; }
void SetTracksName(const char *n) { fTracksName = n; }
void SetClusName(const char *n) { fCaloName = n; }
void SetCellsName(const char *n) { fCellsName = n; }
void SetMCParticlesName(const char *n) { fMCParticlesName = n; }
void SetPythiaInfoName(const char *n) { fPythiaInfoName = n; }
void SetSuffix(const char *s) { fSuffix = s; }
void SetGeometryName(const char *n) { fGeomName = n; }
void SetMarkMC(Int_t m) { fMarkMC = m; }
virtual void SetNClusters(Int_t n) { fNClusters = n; }
virtual void SetNCells(Int_t n) { fNCells = n; }
virtual void SetNTracks(Int_t n) { fNTracks = n; }
protected:
void UserExec(Option_t* );
void UserCreateOutputObjects();
Int_t SetNumberOfOutCells(Int_t n);
Int_t AddCell(Double_t e = -1, Double_t eta = -999, Double_t phi = -1);
Int_t AddCell(Double_t e, Int_t absId, Double_t time = 0, Int_t label=0);
AliVCluster *AddCluster(Double_t e = -1, Double_t eta = -999, Double_t phi = -1, Int_t label=0);
AliVCluster *AddCluster(Double_t e, Int_t absId, Int_t label=0);
AliVCluster *AddCluster(AliVCluster *oc);
AliPicoTrack *AddTrack(Double_t pt = -1, Double_t eta = -999, Double_t phi = -1, Byte_t type=0,
Double_t etaemc=0, Double_t phiemc=0, Double_t ptemc=0, Bool_t ise=kFALSE,
Int_t label=0, Short_t charge=1, Double_t mass = 0.1396);
AliAODMCParticle *AddMCParticle(AliAODMCParticle *part, Int_t origIndex);
void AddV2(Double_t &phi, Double_t &pt) const;
void CopyCells();
void CopyClusters();
void CopyTracks();
void CopyMCParticles();
void GetRandomCell(Double_t &eta, Double_t &phi, Int_t &absId);
Double_t GetRandomEta(Bool_t emcal=kFALSE);
Double_t GetRandomPhi(Bool_t emcal=kFALSE);
Double_t GetRandomPt();
void GetRandomParticle(Double_t &pt, Double_t &eta, Double_t &phi, Bool_t emcal=kFALSE);
virtual Bool_t ExecOnce();
virtual void Run();
TString fGeomName;
TString fTracksName;
TString fOutTracksName;
TString fCaloName;
TString fOutCaloName;
TString fCellsName;
TString fOutCellsName;
TString fMCParticlesName;
TString fOutMCParticlesName;
TString fPythiaInfoName;
Bool_t fIsMC;
TString fSuffix;
Float_t fEtaMin;
Float_t fEtaMax;
Float_t fPhiMin;
Float_t fPhiMax;
Float_t fPtMin;
Float_t fPtMax;
Bool_t fCopyArray;
Int_t fNClusters;
Int_t fNCells;
Int_t fNTracks;
Int_t fMarkMC;
TH1F *fPtSpectrum;
TF2 *fPtPhiEvPlDistribution;
TH1F *fDensitySpectrum;
TF1 *fDifferentialV2;
Bool_t fAddV2;
Bool_t fFlowFluctuations;
Bool_t fQAhistos;
Double_t fPsi;
Bool_t fIsInit;
AliEMCALGeometry *fGeom;
Double_t fVertex[3];
TClonesArray *fClusters;
TClonesArray *fOutClusters;
TClonesArray *fTracks;
TClonesArray *fOutTracks;
AliVCaloCells *fCaloCells;
AliVCaloCells *fOutCaloCells;
Int_t fAddedCells;
TClonesArray *fMCParticles;
AliNamedArrayI *fMCParticlesMap;
TClonesArray *fOutMCParticles;
AliNamedArrayI *fOutMCParticlesMap;
Int_t fMCLabelShift;
Bool_t fEsdMode;
TList *fOutput;
AliPythiaInfo *fPythiaInfo;
private:
AliJetModelBaseTask(const AliJetModelBaseTask&);
AliJetModelBaseTask &operator=(const AliJetModelBaseTask&);
ClassDef(AliJetModelBaseTask, 12)
};
#endif
AliJetModelBaseTask.h:100 AliJetModelBaseTask.h:101 AliJetModelBaseTask.h:102 AliJetModelBaseTask.h:103 AliJetModelBaseTask.h:104 AliJetModelBaseTask.h:105 AliJetModelBaseTask.h:106 AliJetModelBaseTask.h:107 AliJetModelBaseTask.h:108 AliJetModelBaseTask.h:109 AliJetModelBaseTask.h:110 AliJetModelBaseTask.h:111 AliJetModelBaseTask.h:112 AliJetModelBaseTask.h:113 AliJetModelBaseTask.h:114 AliJetModelBaseTask.h:115 AliJetModelBaseTask.h:116 AliJetModelBaseTask.h:117 AliJetModelBaseTask.h:118 AliJetModelBaseTask.h:119 AliJetModelBaseTask.h:120 AliJetModelBaseTask.h:121 AliJetModelBaseTask.h:122 AliJetModelBaseTask.h:123 AliJetModelBaseTask.h:124 AliJetModelBaseTask.h:125 AliJetModelBaseTask.h:126 AliJetModelBaseTask.h:127 AliJetModelBaseTask.h:128 AliJetModelBaseTask.h:129 AliJetModelBaseTask.h:130 AliJetModelBaseTask.h:131 AliJetModelBaseTask.h:132 AliJetModelBaseTask.h:133 AliJetModelBaseTask.h:134 AliJetModelBaseTask.h:135 AliJetModelBaseTask.h:136