#ifndef ALIANALYSISTASKMULTIDIELECTRONTG_H
#define ALIANALYSISTASKMULTIDIELECTRONTG_H
#include "TList.h"
#include "AliAnalysisTaskSE.h"
#include <vector>
#include <deque>
#include <cstdlib>
using std::vector;
using std::deque;
class AliDielectron;
class TH1D;
class AliAnalysisCuts;
class AliTriggerAnalysis;
class AliESDtrackCuts;
class AliDielectronSingleTG : public TObject
{
public:
AliDielectronSingleTG():
fCharge(0),
fCentrality(0),
fXv(0),
fYv(0),
fZv(0),
fPx(0),
fPy(0),
fPz(0),
fPt(0),
fEta(0),
fPhi(0),
fTheta(0),
fConv(0),
fGst(0),
fObj(0x0)
{;
}
AliDielectronSingleTG(Int_t charge, Double_t cent,
Double_t xv, Double_t yv, Double_t zv,
Double_t px, Double_t py, Double_t pz, Double_t pt,
Double_t eta, Double_t phi, Double_t theta,
Int_t conv, Int_t ghost, AliVTrack *trk)
:
fCharge(charge),
fCentrality(cent),
fXv(xv),
fYv(yv),
fZv(zv),
fPx(px),
fPy(py),
fPz(pz),
fPt(pt),
fEta(eta),
fPhi(phi),
fTheta(theta),
fConv(conv),
fGst(ghost), fObj(0x0)
{
SetTrack(trk);
;
}
AliDielectronSingleTG(const AliDielectronSingleTG&);
AliDielectronSingleTG &operator=(const AliDielectronSingleTG&);
~AliDielectronSingleTG() {;}
void SetTrack(AliVTrack * const trk) { fObj = trk;}
virtual Int_t Charge(void) const { return fCharge;}
Double_t Phi(void) const { return fPhi;}
Double_t Eta(void) const { return fEta;}
Double_t Theta(void) const { return fTheta;}
Double_t Px(void) const { return fPx;}
Double_t Py(void) const { return fPy;}
Double_t Pz(void) const { return fPz;}
Double_t Xv(void) const { return fPx;}
Double_t Yv(void) const { return fPy;}
Double_t Zv(void) const { return fPz;}
Double_t Pt(void) const { return fPt;}
AliVTrack *GetTrack(void) const { return fObj;}
void SetConvFlag(Int_t val){ fConv = val;}
void SetGstFlag(Int_t val){ fGst = val;}
Int_t GetConvFlag(void) const { return fConv;}
Int_t GetGstFlag(void) const { return fGst;}
protected:
Int_t fCharge;
Double_t fCentrality;
Double_t fXv;
Double_t fYv;
Double_t fZv;
Double_t fPx;
Double_t fPy;
Double_t fPz;
Double_t fPt;
Double_t fEta;
Double_t fPhi;
Double_t fTheta;
Int_t fConv;
Int_t fGst;
AliVTrack *fObj;
ClassDef(AliDielectronSingleTG, 2)
};
class AliAnalysisTaskMultiDielectronTG : public AliAnalysisTaskSE {
public:
AliAnalysisTaskMultiDielectronTG();
AliAnalysisTaskMultiDielectronTG(const char *name);
virtual ~AliAnalysisTaskMultiDielectronTG();
enum ETriggerLogig {kAny, kExact};
virtual void UserExec(Option_t *option);
virtual void UserCreateOutputObjects();
virtual void FinishTaskOutput();
void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
void SetTriggerMask(ULong64_t mask) {fTriggerMask=mask;}
UInt_t GetTriggerMask() const { return fTriggerMask; }
void SetExcludeTriggerMask(ULong64_t mask) {fExcludeTriggerMask=mask;}
UInt_t GetExcludeTriggerMask() const { return fExcludeTriggerMask; }
void SetTriggerLogic(ETriggerLogig log) {fTriggerLogic=log;}
ETriggerLogig GetTriggerLogic() const {return fTriggerLogic;}
void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
void SetTriggerOnV0AND(Bool_t v0and=kTRUE) { fTriggerOnV0AND=v0and; }
void SetRejectPileup(Bool_t pileup=kTRUE) { fRejectPileup=pileup; }
void AddDielectron(AliDielectron * const die) { fListDielectron.Add(die); }
void RejectOP(double val){fdop = val;}
void RejectConversion(double val, double mass){fdconvphiv = val; fdconvMee = mass;}
void EnableV0mixing(Bool_t val){fdv0mixing = val;}
void CheckGhostPairs(std::vector<AliDielectronSingleTG*> e1);
Bool_t CheckGhost(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2);
void RejectPairs(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, Int_t idie);
void FillPair(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2, int type, AliDielectron *die, Int_t idie);
bool PairTrackcut(double var1, double var2, double var3, int idie);
void CalcVars(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2,
double &mass, double &phiv, double &px, double &py, double&pz,
double &pt, double &e, double &phi, double &eta, double &cos, double &psi);
void CalcPair(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, AliDielectron *die, Int_t idie);
void RandomizePool(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2);
void ReshuffleBuffer(std::vector<AliDielectronSingleTG*> ve, std::deque<AliDielectronSingleTG*> pool);
Double_t GetPhiv(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2);
Double_t GetOpeningAngle(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2);
Double_t GetMass(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2);
void SetRejBGPairs(bool Val1, bool Val2){ fBGRejUnlike = Val1 ; fBGRejLike = Val2 ; }
void SetPairCuts(Int_t Types[20]){
for(int i=0;i<20;i++){
fRejectPairFlag[i] = Types[i];
}
}
protected:
enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};
TList fListDielectron;
TList fListHistos;
TList fListCF;
TList *fQAElectron;
Bool_t fSelectPhysics;
UInt_t fTriggerMask;
UInt_t fExcludeTriggerMask;
Bool_t fTriggerOnV0AND;
Bool_t fRejectPileup;
enum PairRejType { NoRej=0, RejPairOp, RejPairPv, CutPairOp, CutPairPv};
Int_t fRejectPairFlag[20];
ETriggerLogig fTriggerLogic;
AliTriggerAnalysis *fTriggerAnalysis;
AliAnalysisCuts *fEventFilter;
AliESDtrackCuts *fCutsMother;
TH1D *fEventStat;
TH1D *fEvent;
TH2D *fdEdXvsPt;
TH2D *fdEdXnSigmaElecvsPt;
TH2D *fdEdXvsPtTOF;
TH2D *fdEdXnSigmaElecvsPtTOF;
TH2D *fTOFbetavsPt;
TH2D *fTOFnSigmaElecvsPt;
TH2F *fNCrossedRowsTPC;
TH2F *fChi2ClusTPC;
TH2F *fRatioCrossClusTPC;
Double_t fgValues[AliDielectronVarManager::kNMaxValues];
std::vector<AliDielectronSingleTG*> fVem;
std::vector<AliDielectronSingleTG*> fVep;
std::vector<AliDielectronSingleTG*> fVemtmp;
std::vector<AliDielectronSingleTG*> fVeptmp;
Double_t fdconvphiv;
Double_t fdconvMee;
Double_t fdop;
Double_t fbz;
Bool_t fdv0mixing;
Bool_t fBGRejUnlike;
Bool_t fBGRejLike;
static const int fgkNBUF=100;
static const int fgkNMix=40;
static const int fgkNRPBIN=12;
static const int fgkNZBIN=10;
static const int fgkNCENT=10;
static const int fgkNDIE=20;
int fibuf[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];
std::vector<AliDielectronSingleTG*> fvep[fgkNBUF][fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];
std::vector<AliDielectronSingleTG*> fvem[fgkNBUF][fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];
static const unsigned int fgkMAXPOOL=500;
static const int fgkMAXTRY=3;
std::deque<AliDielectronSingleTG*> fpoolp[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];
std::deque<AliDielectronSingleTG*> fpoolm[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];
AliAnalysisTaskMultiDielectronTG(const AliAnalysisTaskMultiDielectronTG &c);
AliAnalysisTaskMultiDielectronTG& operator= (const AliAnalysisTaskMultiDielectronTG &c);
ClassDef(AliAnalysisTaskMultiDielectronTG, 2);
};
#endif
AliAnalysisTaskMultiDielectronTG.h:1 AliAnalysisTaskMultiDielectronTG.h:2 AliAnalysisTaskMultiDielectronTG.h:3 AliAnalysisTaskMultiDielectronTG.h:4 AliAnalysisTaskMultiDielectronTG.h:5 AliAnalysisTaskMultiDielectronTG.h:6 AliAnalysisTaskMultiDielectronTG.h:7 AliAnalysisTaskMultiDielectronTG.h:8 AliAnalysisTaskMultiDielectronTG.h:9 AliAnalysisTaskMultiDielectronTG.h:10 AliAnalysisTaskMultiDielectronTG.h:11 AliAnalysisTaskMultiDielectronTG.h:12 AliAnalysisTaskMultiDielectronTG.h:13 AliAnalysisTaskMultiDielectronTG.h:14 AliAnalysisTaskMultiDielectronTG.h:15 AliAnalysisTaskMultiDielectronTG.h:16 AliAnalysisTaskMultiDielectronTG.h:17 AliAnalysisTaskMultiDielectronTG.h:18 AliAnalysisTaskMultiDielectronTG.h:19 AliAnalysisTaskMultiDielectronTG.h:20 AliAnalysisTaskMultiDielectronTG.h:21 AliAnalysisTaskMultiDielectronTG.h:22 AliAnalysisTaskMultiDielectronTG.h:23 AliAnalysisTaskMultiDielectronTG.h:24 AliAnalysisTaskMultiDielectronTG.h:25 AliAnalysisTaskMultiDielectronTG.h:26 AliAnalysisTaskMultiDielectronTG.h:27 AliAnalysisTaskMultiDielectronTG.h:28 AliAnalysisTaskMultiDielectronTG.h:29 AliAnalysisTaskMultiDielectronTG.h:30 AliAnalysisTaskMultiDielectronTG.h:31 AliAnalysisTaskMultiDielectronTG.h:32 AliAnalysisTaskMultiDielectronTG.h:33 AliAnalysisTaskMultiDielectronTG.h:34 AliAnalysisTaskMultiDielectronTG.h:35 AliAnalysisTaskMultiDielectronTG.h:36 AliAnalysisTaskMultiDielectronTG.h:37 AliAnalysisTaskMultiDielectronTG.h:38 AliAnalysisTaskMultiDielectronTG.h:39 AliAnalysisTaskMultiDielectronTG.h:40 AliAnalysisTaskMultiDielectronTG.h:41 AliAnalysisTaskMultiDielectronTG.h:42 AliAnalysisTaskMultiDielectronTG.h:43 AliAnalysisTaskMultiDielectronTG.h:44 AliAnalysisTaskMultiDielectronTG.h:45 AliAnalysisTaskMultiDielectronTG.h:46 AliAnalysisTaskMultiDielectronTG.h:47 AliAnalysisTaskMultiDielectronTG.h:48 AliAnalysisTaskMultiDielectronTG.h:49 AliAnalysisTaskMultiDielectronTG.h:50 AliAnalysisTaskMultiDielectronTG.h:51 AliAnalysisTaskMultiDielectronTG.h:52 AliAnalysisTaskMultiDielectronTG.h:53 AliAnalysisTaskMultiDielectronTG.h:54 AliAnalysisTaskMultiDielectronTG.h:55 AliAnalysisTaskMultiDielectronTG.h:56 AliAnalysisTaskMultiDielectronTG.h:57 AliAnalysisTaskMultiDielectronTG.h:58 AliAnalysisTaskMultiDielectronTG.h:59 AliAnalysisTaskMultiDielectronTG.h:60 AliAnalysisTaskMultiDielectronTG.h:61 AliAnalysisTaskMultiDielectronTG.h:62 AliAnalysisTaskMultiDielectronTG.h:63 AliAnalysisTaskMultiDielectronTG.h:64 AliAnalysisTaskMultiDielectronTG.h:65 AliAnalysisTaskMultiDielectronTG.h:66 AliAnalysisTaskMultiDielectronTG.h:67 AliAnalysisTaskMultiDielectronTG.h:68 AliAnalysisTaskMultiDielectronTG.h:69 AliAnalysisTaskMultiDielectronTG.h:70 AliAnalysisTaskMultiDielectronTG.h:71 AliAnalysisTaskMultiDielectronTG.h:72 AliAnalysisTaskMultiDielectronTG.h:73 AliAnalysisTaskMultiDielectronTG.h:74 AliAnalysisTaskMultiDielectronTG.h:75 AliAnalysisTaskMultiDielectronTG.h:76 AliAnalysisTaskMultiDielectronTG.h:77 AliAnalysisTaskMultiDielectronTG.h:78 AliAnalysisTaskMultiDielectronTG.h:79 AliAnalysisTaskMultiDielectronTG.h:80 AliAnalysisTaskMultiDielectronTG.h:81 AliAnalysisTaskMultiDielectronTG.h:82 AliAnalysisTaskMultiDielectronTG.h:83 AliAnalysisTaskMultiDielectronTG.h:84 AliAnalysisTaskMultiDielectronTG.h:85 AliAnalysisTaskMultiDielectronTG.h:86 AliAnalysisTaskMultiDielectronTG.h:87 AliAnalysisTaskMultiDielectronTG.h:88 AliAnalysisTaskMultiDielectronTG.h:89 AliAnalysisTaskMultiDielectronTG.h:90 AliAnalysisTaskMultiDielectronTG.h:91 AliAnalysisTaskMultiDielectronTG.h:92 AliAnalysisTaskMultiDielectronTG.h:93 AliAnalysisTaskMultiDielectronTG.h:94 AliAnalysisTaskMultiDielectronTG.h:95 AliAnalysisTaskMultiDielectronTG.h:96 AliAnalysisTaskMultiDielectronTG.h:97 AliAnalysisTaskMultiDielectronTG.h:98 AliAnalysisTaskMultiDielectronTG.h:99 AliAnalysisTaskMultiDielectronTG.h:100 AliAnalysisTaskMultiDielectronTG.h:101 AliAnalysisTaskMultiDielectronTG.h:102 AliAnalysisTaskMultiDielectronTG.h:103 AliAnalysisTaskMultiDielectronTG.h:104 AliAnalysisTaskMultiDielectronTG.h:105 AliAnalysisTaskMultiDielectronTG.h:106 AliAnalysisTaskMultiDielectronTG.h:107 AliAnalysisTaskMultiDielectronTG.h:108 AliAnalysisTaskMultiDielectronTG.h:109 AliAnalysisTaskMultiDielectronTG.h:110 AliAnalysisTaskMultiDielectronTG.h:111 AliAnalysisTaskMultiDielectronTG.h:112 AliAnalysisTaskMultiDielectronTG.h:113 AliAnalysisTaskMultiDielectronTG.h:114 AliAnalysisTaskMultiDielectronTG.h:115 AliAnalysisTaskMultiDielectronTG.h:116 AliAnalysisTaskMultiDielectronTG.h:117 AliAnalysisTaskMultiDielectronTG.h:118 AliAnalysisTaskMultiDielectronTG.h:119 AliAnalysisTaskMultiDielectronTG.h:120 AliAnalysisTaskMultiDielectronTG.h:121 AliAnalysisTaskMultiDielectronTG.h:122 AliAnalysisTaskMultiDielectronTG.h:123 AliAnalysisTaskMultiDielectronTG.h:124 AliAnalysisTaskMultiDielectronTG.h:125 AliAnalysisTaskMultiDielectronTG.h:126 AliAnalysisTaskMultiDielectronTG.h:127 AliAnalysisTaskMultiDielectronTG.h:128 AliAnalysisTaskMultiDielectronTG.h:129 AliAnalysisTaskMultiDielectronTG.h:130 AliAnalysisTaskMultiDielectronTG.h:131 AliAnalysisTaskMultiDielectronTG.h:132 AliAnalysisTaskMultiDielectronTG.h:133 AliAnalysisTaskMultiDielectronTG.h:134 AliAnalysisTaskMultiDielectronTG.h:135 AliAnalysisTaskMultiDielectronTG.h:136 AliAnalysisTaskMultiDielectronTG.h:137 AliAnalysisTaskMultiDielectronTG.h:138 AliAnalysisTaskMultiDielectronTG.h:139 AliAnalysisTaskMultiDielectronTG.h:140 AliAnalysisTaskMultiDielectronTG.h:141 AliAnalysisTaskMultiDielectronTG.h:142 AliAnalysisTaskMultiDielectronTG.h:143 AliAnalysisTaskMultiDielectronTG.h:144 AliAnalysisTaskMultiDielectronTG.h:145 AliAnalysisTaskMultiDielectronTG.h:146 AliAnalysisTaskMultiDielectronTG.h:147 AliAnalysisTaskMultiDielectronTG.h:148 AliAnalysisTaskMultiDielectronTG.h:149 AliAnalysisTaskMultiDielectronTG.h:150 AliAnalysisTaskMultiDielectronTG.h:151 AliAnalysisTaskMultiDielectronTG.h:152 AliAnalysisTaskMultiDielectronTG.h:153 AliAnalysisTaskMultiDielectronTG.h:154 AliAnalysisTaskMultiDielectronTG.h:155 AliAnalysisTaskMultiDielectronTG.h:156 AliAnalysisTaskMultiDielectronTG.h:157 AliAnalysisTaskMultiDielectronTG.h:158 AliAnalysisTaskMultiDielectronTG.h:159 AliAnalysisTaskMultiDielectronTG.h:160 AliAnalysisTaskMultiDielectronTG.h:161 AliAnalysisTaskMultiDielectronTG.h:162 AliAnalysisTaskMultiDielectronTG.h:163 AliAnalysisTaskMultiDielectronTG.h:164 AliAnalysisTaskMultiDielectronTG.h:165 AliAnalysisTaskMultiDielectronTG.h:166 AliAnalysisTaskMultiDielectronTG.h:167 AliAnalysisTaskMultiDielectronTG.h:168 AliAnalysisTaskMultiDielectronTG.h:169 AliAnalysisTaskMultiDielectronTG.h:170 AliAnalysisTaskMultiDielectronTG.h:171 AliAnalysisTaskMultiDielectronTG.h:172 AliAnalysisTaskMultiDielectronTG.h:173 AliAnalysisTaskMultiDielectronTG.h:174 AliAnalysisTaskMultiDielectronTG.h:175 AliAnalysisTaskMultiDielectronTG.h:176 AliAnalysisTaskMultiDielectronTG.h:177 AliAnalysisTaskMultiDielectronTG.h:178 AliAnalysisTaskMultiDielectronTG.h:179 AliAnalysisTaskMultiDielectronTG.h:180 AliAnalysisTaskMultiDielectronTG.h:181 AliAnalysisTaskMultiDielectronTG.h:182 AliAnalysisTaskMultiDielectronTG.h:183 AliAnalysisTaskMultiDielectronTG.h:184 AliAnalysisTaskMultiDielectronTG.h:185 AliAnalysisTaskMultiDielectronTG.h:186 AliAnalysisTaskMultiDielectronTG.h:187 AliAnalysisTaskMultiDielectronTG.h:188 AliAnalysisTaskMultiDielectronTG.h:189 AliAnalysisTaskMultiDielectronTG.h:190 AliAnalysisTaskMultiDielectronTG.h:191 AliAnalysisTaskMultiDielectronTG.h:192 AliAnalysisTaskMultiDielectronTG.h:193 AliAnalysisTaskMultiDielectronTG.h:194 AliAnalysisTaskMultiDielectronTG.h:195 AliAnalysisTaskMultiDielectronTG.h:196 AliAnalysisTaskMultiDielectronTG.h:197 AliAnalysisTaskMultiDielectronTG.h:198 AliAnalysisTaskMultiDielectronTG.h:199 AliAnalysisTaskMultiDielectronTG.h:200 AliAnalysisTaskMultiDielectronTG.h:201 AliAnalysisTaskMultiDielectronTG.h:202 AliAnalysisTaskMultiDielectronTG.h:203 AliAnalysisTaskMultiDielectronTG.h:204 AliAnalysisTaskMultiDielectronTG.h:205 AliAnalysisTaskMultiDielectronTG.h:206 AliAnalysisTaskMultiDielectronTG.h:207 AliAnalysisTaskMultiDielectronTG.h:208 AliAnalysisTaskMultiDielectronTG.h:209 AliAnalysisTaskMultiDielectronTG.h:210 AliAnalysisTaskMultiDielectronTG.h:211 AliAnalysisTaskMultiDielectronTG.h:212 AliAnalysisTaskMultiDielectronTG.h:213 AliAnalysisTaskMultiDielectronTG.h:214 AliAnalysisTaskMultiDielectronTG.h:215 AliAnalysisTaskMultiDielectronTG.h:216 AliAnalysisTaskMultiDielectronTG.h:217 AliAnalysisTaskMultiDielectronTG.h:218 AliAnalysisTaskMultiDielectronTG.h:219 AliAnalysisTaskMultiDielectronTG.h:220 AliAnalysisTaskMultiDielectronTG.h:221 AliAnalysisTaskMultiDielectronTG.h:222 AliAnalysisTaskMultiDielectronTG.h:223 AliAnalysisTaskMultiDielectronTG.h:224 AliAnalysisTaskMultiDielectronTG.h:225 AliAnalysisTaskMultiDielectronTG.h:226 AliAnalysisTaskMultiDielectronTG.h:227 AliAnalysisTaskMultiDielectronTG.h:228 AliAnalysisTaskMultiDielectronTG.h:229 AliAnalysisTaskMultiDielectronTG.h:230 AliAnalysisTaskMultiDielectronTG.h:231 AliAnalysisTaskMultiDielectronTG.h:232 AliAnalysisTaskMultiDielectronTG.h:233 AliAnalysisTaskMultiDielectronTG.h:234 AliAnalysisTaskMultiDielectronTG.h:235 AliAnalysisTaskMultiDielectronTG.h:236 AliAnalysisTaskMultiDielectronTG.h:237 AliAnalysisTaskMultiDielectronTG.h:238 AliAnalysisTaskMultiDielectronTG.h:239 AliAnalysisTaskMultiDielectronTG.h:240 AliAnalysisTaskMultiDielectronTG.h:241 AliAnalysisTaskMultiDielectronTG.h:242 AliAnalysisTaskMultiDielectronTG.h:243 AliAnalysisTaskMultiDielectronTG.h:244 AliAnalysisTaskMultiDielectronTG.h:245 AliAnalysisTaskMultiDielectronTG.h:246 AliAnalysisTaskMultiDielectronTG.h:247 AliAnalysisTaskMultiDielectronTG.h:248 AliAnalysisTaskMultiDielectronTG.h:249 AliAnalysisTaskMultiDielectronTG.h:250 AliAnalysisTaskMultiDielectronTG.h:251 AliAnalysisTaskMultiDielectronTG.h:252 AliAnalysisTaskMultiDielectronTG.h:253 AliAnalysisTaskMultiDielectronTG.h:254 AliAnalysisTaskMultiDielectronTG.h:255 AliAnalysisTaskMultiDielectronTG.h:256 AliAnalysisTaskMultiDielectronTG.h:257 AliAnalysisTaskMultiDielectronTG.h:258 AliAnalysisTaskMultiDielectronTG.h:259 AliAnalysisTaskMultiDielectronTG.h:260 AliAnalysisTaskMultiDielectronTG.h:261 AliAnalysisTaskMultiDielectronTG.h:262 AliAnalysisTaskMultiDielectronTG.h:263 AliAnalysisTaskMultiDielectronTG.h:264