ROOT logo
#ifndef ALIRSNMINIMonitorTask_H
#define ALIRSNMINIMonitorTask_H

//
// Analysis task for 'mini' sub-package
// Contains all definitions needed for running an analysis:
// -- global event cut
// -- a list of track cuts (any number)
// -- definitions of output histograms
// -- values to be computed.
//

#include <TString.h>
#include <TClonesArray.h>

#include "AliAnalysisTaskSE.h"

#include "AliRsnEvent.h"
#include "AliRsnMiniMonitor.h"

class TList;

class AliTriggerAnalysis;
class AliRsnMiniEvent;
class AliRsnCutSet;

class AliRsnMiniMonitorTask : public AliAnalysisTaskSE {

public:

   AliRsnMiniMonitorTask();
   AliRsnMiniMonitorTask(const char *name, Bool_t isMC = kFALSE);
   AliRsnMiniMonitorTask(const AliRsnMiniMonitorTask &copy);
   AliRsnMiniMonitorTask &operator=(const AliRsnMiniMonitorTask &copy);
   virtual ~AliRsnMiniMonitorTask();

   void                UseMC(Bool_t yn = kTRUE)           {fUseMC = yn;}
   void                UseCentrality(const char *type)    {fUseCentrality = kTRUE; fCentralityType = type; fCentralityType.ToUpper();}
   void                UseMultiplicity(const char *type)  {fUseCentrality = kFALSE; fCentralityType = type; fCentralityType.ToUpper();}
   void                SetEventCuts(AliRsnCutSet *cuts)   {fEventCuts    = cuts;}
   Int_t               AddTrackCuts(AliRsnCutSet *cuts);
   TClonesArray       *Outputs()                          {return &fHistograms;}

   virtual void        UserCreateOutputObjects();
   virtual void        UserExec(Option_t *);
   virtual void        Terminate(Option_t *);

   AliRsnMiniMonitor  *CreateMonitor(const char *name, AliRsnMiniMonitor::EType type, Int_t cutID);

private:

   Char_t   CheckCurrentEvent();
   Double_t ComputeCentrality(Bool_t isESD);

   Bool_t               fUseMC;           //  use or not MC info
   Int_t                fEvNum;           //! absolute event counter
   Bool_t               fUseCentrality;   //  if true, use centrality for event, otherwise use multiplicity
   TString              fCentralityType;  //  definition used to choose what centrality or multiplicity to use

   TList               *fOutput;          //  output list
   TClonesArray         fHistograms;      //  list of histogram definitions

   AliRsnCutSet        *fEventCuts;       //  cuts on events
   TObjArray            fTrackCuts;       //  list of single track cuts
   AliRsnEvent          fRsnEvent;        //! interface object to the event
   Bool_t               fBigOutput;       //  flag if open file for output list

   ClassDef(AliRsnMiniMonitorTask, 1);   // AliRsnMiniMonitorTask
};

inline AliRsnMiniMonitor *AliRsnMiniMonitorTask::CreateMonitor
(const char *name, AliRsnMiniMonitor::EType type, Int_t cutID)
{
//
// Create a new histogram definition in the task,
// which is then returned to the user for its configuration
//

   Int_t n = fHistograms.GetEntries();
   AliRsnMiniMonitor *newDef = new (fHistograms[n]) AliRsnMiniMonitor(name, type, cutID);

   return newDef;
}

#endif
 AliRsnMiniMonitorTask.h:1
 AliRsnMiniMonitorTask.h:2
 AliRsnMiniMonitorTask.h:3
 AliRsnMiniMonitorTask.h:4
 AliRsnMiniMonitorTask.h:5
 AliRsnMiniMonitorTask.h:6
 AliRsnMiniMonitorTask.h:7
 AliRsnMiniMonitorTask.h:8
 AliRsnMiniMonitorTask.h:9
 AliRsnMiniMonitorTask.h:10
 AliRsnMiniMonitorTask.h:11
 AliRsnMiniMonitorTask.h:12
 AliRsnMiniMonitorTask.h:13
 AliRsnMiniMonitorTask.h:14
 AliRsnMiniMonitorTask.h:15
 AliRsnMiniMonitorTask.h:16
 AliRsnMiniMonitorTask.h:17
 AliRsnMiniMonitorTask.h:18
 AliRsnMiniMonitorTask.h:19
 AliRsnMiniMonitorTask.h:20
 AliRsnMiniMonitorTask.h:21
 AliRsnMiniMonitorTask.h:22
 AliRsnMiniMonitorTask.h:23
 AliRsnMiniMonitorTask.h:24
 AliRsnMiniMonitorTask.h:25
 AliRsnMiniMonitorTask.h:26
 AliRsnMiniMonitorTask.h:27
 AliRsnMiniMonitorTask.h:28
 AliRsnMiniMonitorTask.h:29
 AliRsnMiniMonitorTask.h:30
 AliRsnMiniMonitorTask.h:31
 AliRsnMiniMonitorTask.h:32
 AliRsnMiniMonitorTask.h:33
 AliRsnMiniMonitorTask.h:34
 AliRsnMiniMonitorTask.h:35
 AliRsnMiniMonitorTask.h:36
 AliRsnMiniMonitorTask.h:37
 AliRsnMiniMonitorTask.h:38
 AliRsnMiniMonitorTask.h:39
 AliRsnMiniMonitorTask.h:40
 AliRsnMiniMonitorTask.h:41
 AliRsnMiniMonitorTask.h:42
 AliRsnMiniMonitorTask.h:43
 AliRsnMiniMonitorTask.h:44
 AliRsnMiniMonitorTask.h:45
 AliRsnMiniMonitorTask.h:46
 AliRsnMiniMonitorTask.h:47
 AliRsnMiniMonitorTask.h:48
 AliRsnMiniMonitorTask.h:49
 AliRsnMiniMonitorTask.h:50
 AliRsnMiniMonitorTask.h:51
 AliRsnMiniMonitorTask.h:52
 AliRsnMiniMonitorTask.h:53
 AliRsnMiniMonitorTask.h:54
 AliRsnMiniMonitorTask.h:55
 AliRsnMiniMonitorTask.h:56
 AliRsnMiniMonitorTask.h:57
 AliRsnMiniMonitorTask.h:58
 AliRsnMiniMonitorTask.h:59
 AliRsnMiniMonitorTask.h:60
 AliRsnMiniMonitorTask.h:61
 AliRsnMiniMonitorTask.h:62
 AliRsnMiniMonitorTask.h:63
 AliRsnMiniMonitorTask.h:64
 AliRsnMiniMonitorTask.h:65
 AliRsnMiniMonitorTask.h:66
 AliRsnMiniMonitorTask.h:67
 AliRsnMiniMonitorTask.h:68
 AliRsnMiniMonitorTask.h:69
 AliRsnMiniMonitorTask.h:70
 AliRsnMiniMonitorTask.h:71
 AliRsnMiniMonitorTask.h:72
 AliRsnMiniMonitorTask.h:73
 AliRsnMiniMonitorTask.h:74
 AliRsnMiniMonitorTask.h:75
 AliRsnMiniMonitorTask.h:76
 AliRsnMiniMonitorTask.h:77
 AliRsnMiniMonitorTask.h:78
 AliRsnMiniMonitorTask.h:79
 AliRsnMiniMonitorTask.h:80
 AliRsnMiniMonitorTask.h:81
 AliRsnMiniMonitorTask.h:82
 AliRsnMiniMonitorTask.h:83
 AliRsnMiniMonitorTask.h:84
 AliRsnMiniMonitorTask.h:85