ROOT logo
#ifndef ALIANALYSISTASKMULTIDIELECTRONTG_H
#define ALIANALYSISTASKMULTIDIELECTRONTG_H
/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//#####################################################
//#                                                   # 
//#        Basic Analysis task for Dielectron         #
//#          single event analysis                    #
//#                                                   #
//#  by WooJin J. Park, GSI / W.J.Park@gsi.de         #
//#     Ionut C. Arsene, GSI / I.C.Arsene@gsi.de      #
//#     Magnus Mager, CERN / Magnus.Mager@cern.ch     #
//#     Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
//#                                                   #
//#####################################################

#include "TList.h"

#include "AliAnalysisTaskSE.h"

#include <vector>
#include <deque>
#include <cstdlib>


using std::vector;
using std::deque;

// #include "AliDielectronPID.h"

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;     ///charge of track
      Double_t fCentrality;  // centrality 
      Double_t fXv;  // vertex in X
      Double_t fYv;  // vertex in Y
      Double_t fZv;  // vertex in Z
      Double_t fPx;  // Momentum in X
      Double_t fPy;  // Momentum in Y
      Double_t fPz;  // Momentum in Z
      Double_t fPt;  // Momentum in Transverse
      Double_t fEta; // Particle Eta
      Double_t fPhi; // Particle Phi
      Double_t fTheta; //Particle Theta
      Int_t fConv; /// Conversion Flag
      Int_t fGst;  /// Ghost flag
      AliVTrack *fObj;  ///AliVTrack
      
      ClassDef(AliDielectronSingleTG, 2) // Event pool class              

};



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();
  //temporary
//   virtual void NotifyRun(){AliDielectronPID::SetCorrVal((Double_t)fCurrentRunNumber);}
  
  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;} ///To reject conversions
  void RejectConversion(double val, double mass){fdconvphiv = val; fdconvMee = mass;} ///To reject conversions
  void EnableV0mixing(Bool_t val){fdv0mixing = val;}   ///Enable V0 mixing  
  void CheckGhostPairs(std::vector<AliDielectronSingleTG*> e1); ///identify ghost pairs in like sign pais
  Bool_t CheckGhost(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2); ///check ghost pairs for like sign and mixed like-sign pais
  void RejectPairs(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, Int_t idie); ///identify conversions for the rejection
  void FillPair(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2, int type, AliDielectron *die, Int_t idie); /// Fill Pairs
  bool PairTrackcut(double var1, double var2, double var3, int idie); /// Pair cuts
  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); /// Calcualate kinematic variables
  void CalcPair(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, AliDielectron *die, Int_t idie);  ///Process Pairs
  void RandomizePool(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2);         ///Randimize pairs
  void ReshuffleBuffer(std::vector<AliDielectronSingleTG*> ve, std::deque<AliDielectronSingleTG*> pool);  ///ReshuffleBuffer

  Double_t GetPhiv(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate phiv
  Double_t GetOpeningAngle(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate opening angle 
  Double_t GetMass(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate Mass 
  void SetRejBGPairs(bool Val1, bool Val2){ fBGRejUnlike = Val1 ; fBGRejLike = Val2 ; } /// SetFlag to Enable Rejection of ghost BG pairs 
  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;             // List of dielectron framework instances
  TList fListHistos;                 //! List of histogram manager lists in the framework classes
  TList fListCF;                     //! List with CF Managers
  TList *fQAElectron;                     //! List with CF Managers
  

  Bool_t fSelectPhysics;             // Whether to use physics selection
  UInt_t fTriggerMask;               // Event trigger mask
  UInt_t fExcludeTriggerMask;        // Triggers to exclude from the analysis
  Bool_t fTriggerOnV0AND;            // if to trigger on V0and
  Bool_t fRejectPileup;              // pileup rejection wanted

  enum PairRejType { NoRej=0, RejPairOp, RejPairPv, CutPairOp, CutPairPv};
  
  Int_t fRejectPairFlag[20];

  ETriggerLogig fTriggerLogic;       // trigger logic: any or all bits need to be matching
  
  AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis class

  AliAnalysisCuts *fEventFilter;     // event filter

  AliESDtrackCuts *fCutsMother;    /// Mother Cuts for QA

  TH1D *fEventStat;                  //! Histogram with event statistics
  TH1D *fEvent;                      // Centrality
  TH2D *fdEdXvsPt;                   // TPC dE/dx 
  TH2D *fdEdXnSigmaElecvsPt;         // TPC nSigmaEle vs. pt
  TH2D *fdEdXvsPtTOF;                // TPC dE/dx with TOF cut
  TH2D *fdEdXnSigmaElecvsPtTOF;      // TPC nSigmaEle vs. pt with TOF Cuts
  TH2D *fTOFbetavsPt;                // TOF beta vs. pT
  TH2D *fTOFnSigmaElecvsPt;          // TOF nSigma Electron vs. pT
  TH2F *fNCrossedRowsTPC;            // TPC NCrossedRows vs. pT
  TH2F *fChi2ClusTPC;                // TPC Chi2 Per Cluster 
  TH2F *fRatioCrossClusTPC;          // TPC Crossed rows per finable Clusters

  Double_t fgValues[AliDielectronVarManager::kNMaxValues];   /// Track/Pair information from AliDielectronVarManager
  std::vector<AliDielectronSingleTG*>  fVem;      /// Lists of electrons
  std::vector<AliDielectronSingleTG*>  fVep;      /// Lists of positions
  std::vector<AliDielectronSingleTG*>  fVemtmp;   /// template for electron lists
  std::vector<AliDielectronSingleTG*>  fVeptmp;   /// template for positron lists
  Double_t fdconvphiv;      /// PhiCut
  Double_t fdconvMee;      /// MassCut
  Double_t fdop;      /// Opening angle Cut
  Double_t fbz;            /// Magnetic field
  Bool_t fdv0mixing;       /// Mixing using V0 
  Bool_t fBGRejUnlike;     //// Ghost rejection flag for event mixing (unlike pairs)
  Bool_t fBGRejLike;     //// Ghost rejection flag for event mixing (like pairs)

  //Buffer for event mixing
  static const int fgkNBUF=100; //depth of buffer
  static const int fgkNMix=40; //# of events mixed (for +-)
  //static const int NMix=2; //# of events mixed (for +-)
  
  
  static const int fgkNRPBIN=12;    ///Number of RPbin for mixed event 
  static const int fgkNZBIN=10;     ///Number of zbin for mixed event 
  static const int fgkNCENT=10;     ///Number of centrality for mixed event 
  static const int fgkNDIE=20;      ///maximum number of cuts for AliDielectron
  int fibuf[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];    ///buffer occupation for mixed event
  std::vector<AliDielectronSingleTG*> fvep[fgkNBUF][fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];   //// positron buffer for mixing
  std::vector<AliDielectronSingleTG*> fvem[fgkNBUF][fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN];   //// electron buffer for mixing
    
  static const unsigned int fgkMAXPOOL=500;   ////maximum pool for mixing
  //static const unsigned int MAXPOOL=50;
  static const int fgkMAXTRY=3;    ///try to shuffle 
  std::deque<AliDielectronSingleTG*> fpoolp[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN]; ///pool for positrons
  std::deque<AliDielectronSingleTG*> fpoolm[fgkNDIE][fgkNZBIN][fgkNCENT][fgkNRPBIN]; ///pool for electrons
  
  AliAnalysisTaskMultiDielectronTG(const AliAnalysisTaskMultiDielectronTG &c);
  AliAnalysisTaskMultiDielectronTG& operator= (const AliAnalysisTaskMultiDielectronTG &c);
  
  ClassDef(AliAnalysisTaskMultiDielectronTG, 2); //Analysis Task handling multiple instances of AliDielectron
};
#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