1 #ifndef ALIJETMODELBASETASK_H
2 #define ALIJETMODELBASETASK_H
8 class AliEMCALGeometry;
12 class AliAODMCParticle;
18 #include "AliAnalysisTaskSE.h"
20 class AliJetModelBaseTask : public AliAnalysisTaskSE {
22 AliJetModelBaseTask();
23 AliJetModelBaseTask(const char *name, Bool_t drawqa=kFALSE);
24 virtual ~AliJetModelBaseTask();
26 void UserExec(Option_t* /*option*/);
27 void UserCreateOutputObjects();
29 void SetEtaRange(Float_t min, Float_t max) { fEtaMin = min; fEtaMax = max; }
30 void SetPhiRange(Float_t min, Float_t max) { fPhiMin = min; fPhiMax = max; }
31 void SetPtRange(Float_t min, Float_t max) { fPtMin = min; fPtMax = max; }
32 void SetPtSpectrum(TH1 *f) { fPtSpectrum = f; }
33 void SetPtSpectrum(TF1 *f) { fPtSpectrum = new TH1F("ptSpectrum","ptSpectrum",1000,f->GetXmin(),f->GetXmax());
34 fPtSpectrum->Add(f); }
35 void SetDensitySpectrum(TH1 *f) { fDensitySpectrum = f; }
36 void SetDensitySpectrum(TF1 *f) { fDensitySpectrum = new TH1F("densitypectrum","densitypectrum",1000,f->GetXmin(),f->GetXmax());
37 fDensitySpectrum->Add(f); }
39 void SetMC(Bool_t a) { fIsMC = a ; }
41 void SetCopyArray(Bool_t copy) { fCopyArray = copy; }
42 void SetTracksName(const char *n) { fTracksName = n; }
43 void SetClusName(const char *n) { fCaloName = n; }
44 void SetCellsName(const char *n) { fCellsName = n; }
45 void SetMCParticlesName(const char *n) { fMCParticlesName = n; }
46 void SetSuffix(const char *s) { fSuffix = s; }
48 void SetGeometryName(const char *n) { fGeomName = n; }
49 void SetMarkMC(Int_t m) { fMarkMC = m; }
50 virtual void SetNClusters(Int_t n) { fNClusters = n; }
51 virtual void SetNCells(Int_t n) { fNCells = n; }
52 virtual void SetNTracks(Int_t n) { fNTracks = n; }
56 Int_t SetNumberOfOutCells(Int_t n); // set the number of cells
57 Int_t AddCell(Double_t e = -1, Double_t eta = -999, Double_t phi = -1); // add a cell; if values are -1 generate random parameters
58 Int_t AddCell(Double_t e, Int_t absId, Double_t time = 0, Int_t label=0); // add a cell with given energy, position and times
59 AliVCluster *AddCluster(Double_t e = -1, Double_t eta = -999, Double_t phi = -1, Int_t label=0); // add a cluster; if values are -1 generate random parameters
60 AliVCluster *AddCluster(Double_t e, Int_t absId, Int_t label=0); // add a cluster with given energy and position
61 AliVCluster *AddCluster(AliVCluster *oc); // add a cluster (copy)
62 AliPicoTrack *AddTrack(Double_t pt = -1, Double_t eta = -999, Double_t phi = -1, Byte_t type=0,
63 Double_t etaemc=0, Double_t phiemc=0, Double_t ptemc=0, Bool_t ise=kFALSE,
64 Int_t label=0, Short_t charge=1); // add a track; if values are -1 generate random parameters
65 AliAODMCParticle *AddMCParticle(AliAODMCParticle *part, Int_t origIndex); // add a MC particle
69 void CopyMCParticles();
70 void GetRandomCell(Double_t &eta, Double_t &phi, Int_t &absId); // generate a random cell in the calorimeter
71 Double_t GetRandomEta(Bool_t emcal=kFALSE); // generate a random eta value in the given range
72 Double_t GetRandomPhi(Bool_t emcal=kFALSE); // generate a random phi value in the given range
73 Double_t GetRandomPt(); // generate a random pt value in the given range
74 virtual Bool_t ExecOnce(); // intialize task
75 virtual void Run(); // do jet model action
77 TString fGeomName; // EMCal geometry name
78 TString fTracksName; // name of track collection
79 TString fOutTracksName; // name of output track collection
80 TString fCaloName; // name of calo cluster collection
81 TString fOutCaloName; // name of output cluster collection
82 TString fCellsName; // name of calo cells collection
83 TString fOutCellsName; // name of output cells collection
84 TString fMCParticlesName; // name of MC particle collection
85 TString fOutMCParticlesName; // name of output MC particle collection
86 Bool_t fIsMC; // whether the current event is MC or not
87 TString fSuffix; // suffix to add in the name of new collections
88 Float_t fEtaMin; // eta minimum value
89 Float_t fEtaMax; // eta maximum value
90 Float_t fPhiMin; // phi minimum value
91 Float_t fPhiMax; // phi maximum value
92 Float_t fPtMin; // pt minimum value
93 Float_t fPtMax; // pt maximum value
94 Bool_t fCopyArray; // whether or not the array will be copied to a new one before modelling
95 Int_t fNClusters; // how many clusters are being processed
96 Int_t fNCells; // how many cells are being processed
97 Int_t fNTracks; // how many tracks are being processed
98 Int_t fMarkMC; // which MC label is to be used (default=100)
99 TH1 *fPtSpectrum; // pt spectrum to extract random pt values
100 TH1 *fDensitySpectrum; // particle density spectrum to extract random density values
101 Bool_t fQAhistos; // draw QA histograms
102 Bool_t fIsInit; //!=true if initialized
103 AliEMCALGeometry *fGeom; //!pointer to EMCal geometry
104 Double_t fVertex[3]; //!event vertex
105 TClonesArray *fClusters; //!cluster collection
106 TClonesArray *fOutClusters; //!output cluster collection
107 TClonesArray *fTracks; //!track collection
108 TClonesArray *fOutTracks; //!output track collection
109 AliVCaloCells *fCaloCells; //!cells collection
110 AliVCaloCells *fOutCaloCells; //!output cells collection
111 Int_t fAddedCells; //!number of added cells
112 TClonesArray *fMCParticles; //!MC particles collection
113 AliNamedArrayI *fMCParticlesMap; //!MC particles mapping
114 TClonesArray *fOutMCParticles; //!output MC particles collection
115 AliNamedArrayI *fOutMCParticlesMap; //!MC particles mapping
116 Int_t fMCLabelShift; //!MC label shift
117 Bool_t fEsdMode; //!ESD/AOD mode
118 TList *fOutput; //!output list for QA histograms
121 AliJetModelBaseTask(const AliJetModelBaseTask&); // not implemented
122 AliJetModelBaseTask &operator=(const AliJetModelBaseTask&); // not implemented
124 ClassDef(AliJetModelBaseTask, 9) // Jet modelling task