ROOT logo
#ifndef ALIANALYSISTASKMULTIDIELECTRON_H
#define ALIANALYSISTASKMULTIDIELECTRON_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 "AliDielectronPID.h"

class AliDielectron;
class TH1D;
class AliAnalysisCuts;
class AliTriggerAnalysis;

class AliAnalysisTaskMultiDielectron : public AliAnalysisTaskSE {
  
public:
  AliAnalysisTaskMultiDielectron();
  AliAnalysisTaskMultiDielectron(const char *name);
  virtual ~AliAnalysisTaskMultiDielectron();

  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 SetFiredTriggerName(const char* select, Bool_t exclude=kFALSE) {fFiredTrigger=select; fFiredExclude=exclude;}

  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 SetBeamEnergy(Double_t beamEbyHand=-1.)  { fBeamEnergy=beamEbyHand;  }
  
protected:
  enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};
  TObjArray *fPairArray;             //! output array
  TList fListDielectron;             // List of dielectron framework instances
  TList fListHistos;                 //! List of histogram manager lists in the framework classes
  TList fListCF;                     //! 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
  TString fFiredTrigger;             // online trigger class name
  Bool_t fFiredExclude;              // cut logic: select(default) or exclude
  Bool_t fRejectPileup;              // pileup rejection wanted
  Double_t fBeamEnergy;              // beam energy in GeV (set by hand)

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

  AliAnalysisCuts *fEventFilter;     // event filter
  
  TH1D *fEventStat;                  //! Histogram with event statistics
  
  AliAnalysisTaskMultiDielectron(const AliAnalysisTaskMultiDielectron &c);
  AliAnalysisTaskMultiDielectron& operator= (const AliAnalysisTaskMultiDielectron &c);
  
  ClassDef(AliAnalysisTaskMultiDielectron, 4); //Analysis Task handling multiple instances of AliDielectron
};
#endif
 AliAnalysisTaskMultiDielectron.h:1
 AliAnalysisTaskMultiDielectron.h:2
 AliAnalysisTaskMultiDielectron.h:3
 AliAnalysisTaskMultiDielectron.h:4
 AliAnalysisTaskMultiDielectron.h:5
 AliAnalysisTaskMultiDielectron.h:6
 AliAnalysisTaskMultiDielectron.h:7
 AliAnalysisTaskMultiDielectron.h:8
 AliAnalysisTaskMultiDielectron.h:9
 AliAnalysisTaskMultiDielectron.h:10
 AliAnalysisTaskMultiDielectron.h:11
 AliAnalysisTaskMultiDielectron.h:12
 AliAnalysisTaskMultiDielectron.h:13
 AliAnalysisTaskMultiDielectron.h:14
 AliAnalysisTaskMultiDielectron.h:15
 AliAnalysisTaskMultiDielectron.h:16
 AliAnalysisTaskMultiDielectron.h:17
 AliAnalysisTaskMultiDielectron.h:18
 AliAnalysisTaskMultiDielectron.h:19
 AliAnalysisTaskMultiDielectron.h:20
 AliAnalysisTaskMultiDielectron.h:21
 AliAnalysisTaskMultiDielectron.h:22
 AliAnalysisTaskMultiDielectron.h:23
 AliAnalysisTaskMultiDielectron.h:24
 AliAnalysisTaskMultiDielectron.h:25
 AliAnalysisTaskMultiDielectron.h:26
 AliAnalysisTaskMultiDielectron.h:27
 AliAnalysisTaskMultiDielectron.h:28
 AliAnalysisTaskMultiDielectron.h:29
 AliAnalysisTaskMultiDielectron.h:30
 AliAnalysisTaskMultiDielectron.h:31
 AliAnalysisTaskMultiDielectron.h:32
 AliAnalysisTaskMultiDielectron.h:33
 AliAnalysisTaskMultiDielectron.h:34
 AliAnalysisTaskMultiDielectron.h:35
 AliAnalysisTaskMultiDielectron.h:36
 AliAnalysisTaskMultiDielectron.h:37
 AliAnalysisTaskMultiDielectron.h:38
 AliAnalysisTaskMultiDielectron.h:39
 AliAnalysisTaskMultiDielectron.h:40
 AliAnalysisTaskMultiDielectron.h:41
 AliAnalysisTaskMultiDielectron.h:42
 AliAnalysisTaskMultiDielectron.h:43
 AliAnalysisTaskMultiDielectron.h:44
 AliAnalysisTaskMultiDielectron.h:45
 AliAnalysisTaskMultiDielectron.h:46
 AliAnalysisTaskMultiDielectron.h:47
 AliAnalysisTaskMultiDielectron.h:48
 AliAnalysisTaskMultiDielectron.h:49
 AliAnalysisTaskMultiDielectron.h:50
 AliAnalysisTaskMultiDielectron.h:51
 AliAnalysisTaskMultiDielectron.h:52
 AliAnalysisTaskMultiDielectron.h:53
 AliAnalysisTaskMultiDielectron.h:54
 AliAnalysisTaskMultiDielectron.h:55
 AliAnalysisTaskMultiDielectron.h:56
 AliAnalysisTaskMultiDielectron.h:57
 AliAnalysisTaskMultiDielectron.h:58
 AliAnalysisTaskMultiDielectron.h:59
 AliAnalysisTaskMultiDielectron.h:60
 AliAnalysisTaskMultiDielectron.h:61
 AliAnalysisTaskMultiDielectron.h:62
 AliAnalysisTaskMultiDielectron.h:63
 AliAnalysisTaskMultiDielectron.h:64
 AliAnalysisTaskMultiDielectron.h:65
 AliAnalysisTaskMultiDielectron.h:66
 AliAnalysisTaskMultiDielectron.h:67
 AliAnalysisTaskMultiDielectron.h:68
 AliAnalysisTaskMultiDielectron.h:69
 AliAnalysisTaskMultiDielectron.h:70
 AliAnalysisTaskMultiDielectron.h:71
 AliAnalysisTaskMultiDielectron.h:72
 AliAnalysisTaskMultiDielectron.h:73
 AliAnalysisTaskMultiDielectron.h:74
 AliAnalysisTaskMultiDielectron.h:75
 AliAnalysisTaskMultiDielectron.h:76
 AliAnalysisTaskMultiDielectron.h:77
 AliAnalysisTaskMultiDielectron.h:78
 AliAnalysisTaskMultiDielectron.h:79
 AliAnalysisTaskMultiDielectron.h:80
 AliAnalysisTaskMultiDielectron.h:81
 AliAnalysisTaskMultiDielectron.h:82
 AliAnalysisTaskMultiDielectron.h:83
 AliAnalysisTaskMultiDielectron.h:84
 AliAnalysisTaskMultiDielectron.h:85
 AliAnalysisTaskMultiDielectron.h:86
 AliAnalysisTaskMultiDielectron.h:87
 AliAnalysisTaskMultiDielectron.h:88