#ifndef ALIEMCALPICOTRACKINGRIDMAKER_H
#define ALIEMCALPICOTRACKINGRIDMAKER_H
class TClonesArray;
class AliVTrack;
class AliVParticle;
class TProfile;
class TH3F;
class AliEmcalJet;
#include "AliAnalysisTaskEmcalJet.h"
class AliEmcalPicoTrackInGridMaker : public AliAnalysisTaskEmcalJet {
public:
AliEmcalPicoTrackInGridMaker();
AliEmcalPicoTrackInGridMaker(const char *name);
virtual ~AliEmcalPicoTrackInGridMaker();
void SetTracksOutName(const char *name) { fTracksOutName = name; }
void SetCellSize(Double_t a) { fCellSize = a; }
void SetMinCellE(Double_t e) { fMinCellE = e; }
void SetL1Slide(Bool_t b) { fL1Slide = b; }
void SetEMCalAcceptance(Double_t phiMin, Double_t phiMax, Double_t etaMin, Double_t etaMax) { fPhiMin[0]=phiMin; fPhiMax[0]=phiMax; fEtaMin[0]=etaMin; fEtaMax[0]=etaMax; }
void SetDCalAcceptance(Double_t phiMin, Double_t phiMax, Double_t etaMin, Double_t etaMax) { fPhiMin[1]=phiMin; fPhiMax[1]=phiMax; fEtaMin[1]=etaMin; fEtaMax[1]=etaMax; }
void SetExcludeLeadingPatch(Int_t i) { fExclLeadingPatch = i; }
void SetPatchTypeForSubtraction(Int_t i) { fPatchSub = i; }
void SetPatchTypeForSubtraction(Int_t dim, Int_t lev) { fPatchSub = GetPatchType(dim,lev); }
void SetMeanRho(Double_t r) { fRhoMean = r; }
protected:
void UserCreateOutputObjects();
Bool_t Run();
Bool_t InitCells();
Bool_t CreateGridCells();
Bool_t CheckEdges();
void PrintAcceptance() const;
Bool_t InitMiniPatches();
Bool_t CreateGridMiniPatches();
Bool_t CreateGridPatches(const Int_t dim, const Int_t level);
Bool_t InitPatches(const Int_t dim, const Int_t level);
AliEmcalJet* GetClosestJet(const Double_t eta, const Double_t phi, const Int_t icont = 0) const;
Double_t CalculateMedian(const Int_t patchType, const Int_t type, const Int_t areaType = 0);
Double_t CalculateSum(const Int_t patchType) const;
Int_t GetCellType(const Double_t eta, const Double_t phi) const;
Int_t GetCellType(const AliVParticle *vp) const {return GetCellType(vp->Eta(),vp->Phi());}
Int_t GetGridID(const AliVParticle *vp) const {return GetGridID(vp->Eta(),vp->Phi());}
Int_t GetGridID(const Double_t eta, const Double_t phi) const;
Int_t GetGridID(const Int_t row, const Int_t col, const Int_t type) const;
void GetEtaPhiFromGridID(const Int_t id, const Int_t type, Double_t &eta, Double_t &phi) const;
Int_t GetNCellsRow(const Int_t type) const;
Int_t GetNCellsCol(const Int_t type) const;
Int_t GetNRowMiniPatches(const Int_t type) const;
Int_t GetNColMiniPatches(const Int_t type) const;
Int_t GetMiniPatchID(const Int_t row, const Int_t col, const Int_t type) const;
void GetEtaPhiFromMiniPatchID(const Int_t id, const Int_t type, Double_t &eta, Double_t &phi) const;
Int_t GetPatchType(const Int_t dim, const Int_t level) const;
Int_t GetPatchDim(const Int_t ipatch) const;
Int_t GetSlidingStepSizeCells(const Int_t dim, const Int_t level = 1) const;
Int_t GetSlidingStepSizeMiniPatches(const Int_t dim, const Int_t level = 1) const;
Int_t GetTriggerPatchIdStepSizeNoOverlap(const Int_t dim, const Int_t level = 1) const;
Int_t GetNTriggerPatches(const Int_t type, const Int_t dim, const Int_t level) const;
Int_t GetNColTriggerPatches(const Int_t type, const Int_t dim, const Int_t patchType) const ;
Int_t GetNRowTriggerPatches(const Int_t type, const Int_t dim, const Int_t patchType) const;
Int_t GetTriggerPatchID(const Int_t row, const Int_t col, const Int_t type, const Int_t dim, const Int_t patchType) const;
void GetEtaPhiFromTriggerPatchID(const Int_t id, const Int_t type, const Int_t dim, const Int_t level, Double_t &eta, Double_t &phi) const;
Double_t GetPatchArea(const Int_t ipatch) const;
Double_t GetPatchAreaActive(const Int_t id, const Int_t type, const Int_t ipatch, const Int_t atype) const;
TString fTracksOutName;
TClonesArray *fTracksOut;
Bool_t fL1Slide;
Double_t fPhiMin[2];
Double_t fPhiMax[2];
Double_t fEtaMin[2];
Double_t fEtaMax[2];
Double_t fCellSize;
Double_t fMinCellE;
Int_t fExclLeadingPatch;
Int_t fPatchSub;
Double_t fRhoMean;
Int_t fNCells;
Int_t fNCellsEMCal;
Int_t fNCellsDCal;
TArrayD fCellGrid[2];
TArrayD fMiniPatchGrid[2];
TArrayI fActiveAreaMP[2];
TArrayD fPatchGrid[2][5];
TArrayI fActiveAreaMPP[2][5];
TArrayI fActiveAreaCP[2][5];
Int_t fNPatchesEMCal[5];
private:
AliEmcalPicoTrackInGridMaker(const AliEmcalPicoTrackInGridMaker&);
AliEmcalPicoTrackInGridMaker &operator=(const AliEmcalPicoTrackInGridMaker&);
TH2F *fh2MedianTypeEmcal[3];
TH2F *fh2MedianTypeDcal[3];
TProfile *fpMedianTypeEmcal[3];
TProfile *fpMedianTypeDcal[3];
TH1F *fh1RhoEmcal[5];
TH1F *fh1RhoDcal[5];
TH2F *fPatchEnVsActivityEmcal[5];
TH2F *fPatchEnVsActivityDcal[5];
TH1F *fPatchECorr[2][5];
TH1F *fPatchECorrPar[2][5];
TH1F *fPatchERaw[2][5];
TH2F *fPatchECorrRho[2][5];
TH3F *fPatchECorrECorrRho[2][5];
TH2F *fh2PatchEtaPhiEmcal[5];
TH2F *fh2PatchEtaPhiDcal[5];
TH2F *fh2JetPtPatchECorr[2][5];
TH2F *fMultVsRho;
ClassDef(AliEmcalPicoTrackInGridMaker, 3);
};
#endif
AliEmcalPicoTrackInGridMaker.h:1 AliEmcalPicoTrackInGridMaker.h:2 AliEmcalPicoTrackInGridMaker.h:3 AliEmcalPicoTrackInGridMaker.h:4 AliEmcalPicoTrackInGridMaker.h:5 AliEmcalPicoTrackInGridMaker.h:6 AliEmcalPicoTrackInGridMaker.h:7 AliEmcalPicoTrackInGridMaker.h:8 AliEmcalPicoTrackInGridMaker.h:9 AliEmcalPicoTrackInGridMaker.h:10 AliEmcalPicoTrackInGridMaker.h:11 AliEmcalPicoTrackInGridMaker.h:12 AliEmcalPicoTrackInGridMaker.h:13 AliEmcalPicoTrackInGridMaker.h:14 AliEmcalPicoTrackInGridMaker.h:15 AliEmcalPicoTrackInGridMaker.h:16 AliEmcalPicoTrackInGridMaker.h:17 AliEmcalPicoTrackInGridMaker.h:18 AliEmcalPicoTrackInGridMaker.h:19 AliEmcalPicoTrackInGridMaker.h:20 AliEmcalPicoTrackInGridMaker.h:21 AliEmcalPicoTrackInGridMaker.h:22 AliEmcalPicoTrackInGridMaker.h:23 AliEmcalPicoTrackInGridMaker.h:24 AliEmcalPicoTrackInGridMaker.h:25 AliEmcalPicoTrackInGridMaker.h:26 AliEmcalPicoTrackInGridMaker.h:27 AliEmcalPicoTrackInGridMaker.h:28 AliEmcalPicoTrackInGridMaker.h:29 AliEmcalPicoTrackInGridMaker.h:30 AliEmcalPicoTrackInGridMaker.h:31 AliEmcalPicoTrackInGridMaker.h:32 AliEmcalPicoTrackInGridMaker.h:33 AliEmcalPicoTrackInGridMaker.h:34 AliEmcalPicoTrackInGridMaker.h:35 AliEmcalPicoTrackInGridMaker.h:36 AliEmcalPicoTrackInGridMaker.h:37 AliEmcalPicoTrackInGridMaker.h:38 AliEmcalPicoTrackInGridMaker.h:39 AliEmcalPicoTrackInGridMaker.h:40 AliEmcalPicoTrackInGridMaker.h:41 AliEmcalPicoTrackInGridMaker.h:42 AliEmcalPicoTrackInGridMaker.h:43 AliEmcalPicoTrackInGridMaker.h:44 AliEmcalPicoTrackInGridMaker.h:45 AliEmcalPicoTrackInGridMaker.h:46 AliEmcalPicoTrackInGridMaker.h:47 AliEmcalPicoTrackInGridMaker.h:48 AliEmcalPicoTrackInGridMaker.h:49 AliEmcalPicoTrackInGridMaker.h:50 AliEmcalPicoTrackInGridMaker.h:51 AliEmcalPicoTrackInGridMaker.h:52 AliEmcalPicoTrackInGridMaker.h:53 AliEmcalPicoTrackInGridMaker.h:54 AliEmcalPicoTrackInGridMaker.h:55 AliEmcalPicoTrackInGridMaker.h:56 AliEmcalPicoTrackInGridMaker.h:57 AliEmcalPicoTrackInGridMaker.h:58 AliEmcalPicoTrackInGridMaker.h:59 AliEmcalPicoTrackInGridMaker.h:60 AliEmcalPicoTrackInGridMaker.h:61 AliEmcalPicoTrackInGridMaker.h:62 AliEmcalPicoTrackInGridMaker.h:63 AliEmcalPicoTrackInGridMaker.h:64 AliEmcalPicoTrackInGridMaker.h:65 AliEmcalPicoTrackInGridMaker.h:66 AliEmcalPicoTrackInGridMaker.h:67 AliEmcalPicoTrackInGridMaker.h:68 AliEmcalPicoTrackInGridMaker.h:69 AliEmcalPicoTrackInGridMaker.h:70 AliEmcalPicoTrackInGridMaker.h:71 AliEmcalPicoTrackInGridMaker.h:72 AliEmcalPicoTrackInGridMaker.h:73 AliEmcalPicoTrackInGridMaker.h:74 AliEmcalPicoTrackInGridMaker.h:75 AliEmcalPicoTrackInGridMaker.h:76 AliEmcalPicoTrackInGridMaker.h:77 AliEmcalPicoTrackInGridMaker.h:78 AliEmcalPicoTrackInGridMaker.h:79 AliEmcalPicoTrackInGridMaker.h:80 AliEmcalPicoTrackInGridMaker.h:81 AliEmcalPicoTrackInGridMaker.h:82 AliEmcalPicoTrackInGridMaker.h:83 AliEmcalPicoTrackInGridMaker.h:84 AliEmcalPicoTrackInGridMaker.h:85 AliEmcalPicoTrackInGridMaker.h:86 AliEmcalPicoTrackInGridMaker.h:87 AliEmcalPicoTrackInGridMaker.h:88 AliEmcalPicoTrackInGridMaker.h:89 AliEmcalPicoTrackInGridMaker.h:90 AliEmcalPicoTrackInGridMaker.h:91 AliEmcalPicoTrackInGridMaker.h:92 AliEmcalPicoTrackInGridMaker.h:93 AliEmcalPicoTrackInGridMaker.h:94 AliEmcalPicoTrackInGridMaker.h:95 AliEmcalPicoTrackInGridMaker.h:96 AliEmcalPicoTrackInGridMaker.h:97 AliEmcalPicoTrackInGridMaker.h:98 AliEmcalPicoTrackInGridMaker.h:99 AliEmcalPicoTrackInGridMaker.h:100 AliEmcalPicoTrackInGridMaker.h:101 AliEmcalPicoTrackInGridMaker.h:102 AliEmcalPicoTrackInGridMaker.h:103 AliEmcalPicoTrackInGridMaker.h:104 AliEmcalPicoTrackInGridMaker.h:105 AliEmcalPicoTrackInGridMaker.h:106 AliEmcalPicoTrackInGridMaker.h:107 AliEmcalPicoTrackInGridMaker.h:108 AliEmcalPicoTrackInGridMaker.h:109 AliEmcalPicoTrackInGridMaker.h:110 AliEmcalPicoTrackInGridMaker.h:111 AliEmcalPicoTrackInGridMaker.h:112 AliEmcalPicoTrackInGridMaker.h:113 AliEmcalPicoTrackInGridMaker.h:114 AliEmcalPicoTrackInGridMaker.h:115 AliEmcalPicoTrackInGridMaker.h:116 AliEmcalPicoTrackInGridMaker.h:117 AliEmcalPicoTrackInGridMaker.h:118 AliEmcalPicoTrackInGridMaker.h:119 AliEmcalPicoTrackInGridMaker.h:120 AliEmcalPicoTrackInGridMaker.h:121 AliEmcalPicoTrackInGridMaker.h:122 AliEmcalPicoTrackInGridMaker.h:123 AliEmcalPicoTrackInGridMaker.h:124 AliEmcalPicoTrackInGridMaker.h:125 AliEmcalPicoTrackInGridMaker.h:126 AliEmcalPicoTrackInGridMaker.h:127 AliEmcalPicoTrackInGridMaker.h:128 AliEmcalPicoTrackInGridMaker.h:129 AliEmcalPicoTrackInGridMaker.h:130 AliEmcalPicoTrackInGridMaker.h:131 AliEmcalPicoTrackInGridMaker.h:132 AliEmcalPicoTrackInGridMaker.h:133 AliEmcalPicoTrackInGridMaker.h:134 AliEmcalPicoTrackInGridMaker.h:135 AliEmcalPicoTrackInGridMaker.h:136 AliEmcalPicoTrackInGridMaker.h:137 AliEmcalPicoTrackInGridMaker.h:138 AliEmcalPicoTrackInGridMaker.h:139