ROOT logo
//
// Task to analyse the AOD for for dN/deta in the forward regions 
//
#ifndef ALIMCTRUTHDNDETATASK_H
#define ALIMCTRUTHDNDETATASK_H
/**
 * @file   AliMCTruthdNdetaTask.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:04:54 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_dndeta
 */
#include "AliBasedNdetaTask.h"
class TList;
class TH2D;
class TH1D;

/**
 * Tasks to determine @f$ dN/d\eta@f$ in the forward regions
 *
 * @ingroup pwglf_forward_tasks_dndeta
 * @ingroup pwglf_forward_dndeta
 */
class AliMCTruthdNdetaTask : public AliBasedNdetaTask
{
public:
  /** 
   * Constructor 
   * 
   */
  AliMCTruthdNdetaTask();
  /** 
   * Constructor
   * 
   * @param name    Name of task 
   */
  AliMCTruthdNdetaTask(const char* name);
  /**
   * Destructor
   * 
   */
  virtual ~AliMCTruthdNdetaTask() {}
  /** 
   * Called at end of event processing.
   *
   * This is called once in the master 
   */
  virtual Bool_t Finalize();
protected:
  /** 
   * Copy constructor 
   *
   * @param o Object to copy from 
   */
  AliMCTruthdNdetaTask(const AliMCTruthdNdetaTask& o);
  /** 
   * Assigmement operator
   * 
   * @return Reference to this
   */
  AliMCTruthdNdetaTask& operator=(const AliMCTruthdNdetaTask&);

  /** 
   * Retrieve the histogram 
   * 
   * @param aod AOD event 
   * @param mc  Whether to get the MC histogram or not
   * 
   * @return Retrieved histogram or null
   */
  TH2D* GetHistogram(const AliAODEvent& aod, Bool_t mc);
  /** 
   * Get the marker style 
   * 
   * @return Marker style 
   */
  virtual Int_t GetMarker() const { return GetMarkerStyle(kStar); }
  /** 
   * Get the colour to use for markers (only pp - in PbPb we use a rainbow)
   * 
   * @return Marker colour 
   */
  virtual Int_t GetColor() const { return kGray+2; }
  /** 
   * Make a new centrality bin
   * 
   * @param name   Histogram names
   * @param l      Lower cut
   * @param h      Upper cut
   * 
   * @return Newly allocated object (of our type)
   */
  AliBasedNdetaTask::CentralityBin* 
  MakeCentralityBin(const char* name, Short_t l, Short_t h) const;

  /**
   * Class that holds data for a single centrality bin 
   * 
   */
  class CentralityBin : public AliBasedNdetaTask::CentralityBin 
  {
  public:
    /** 
     * Constructor 
     */
    CentralityBin() : AliBasedNdetaTask::CentralityBin(), fSumTruth(0) {}
    /** 
     * Constructor 
     * 
     * @param name Name used for histograms (e.g., Forward)
     * @param low  Lower centrality cut in percent 
     * @param high Upper centrality cut in percent 
     */
    CentralityBin(const char* name, Short_t low, Short_t high)
      : AliBasedNdetaTask::CentralityBin(name, low, high), 
	fSumTruth(0)
    {}
    /** 
     * Copy constructor 
     * 
     * @param other Object to copy from 
     */
    CentralityBin(const CentralityBin& other) 
      : AliBasedNdetaTask::CentralityBin(other), 
	fSumTruth(other.fSumTruth) 
    {}
    /** 
     * Destructor 
     */
    virtual ~CentralityBin() {}
    /** 
     * Assignement operator 
     * 
     * 
     * @return 
     */
    CentralityBin& operator=(const CentralityBin&) { return *this; }
    /** 
     * Process an event
     * 
     * @param forward     Forward data (for trigger, vertex, & centrality)
     * @param triggerMask Trigger mask 
     * @param isZero      True if this is a zero bin event 
     * @param vzMin       Minimum IP z coordinate
     * @param vzMax       Maximum IP z coordinate
     * @param data        Data histogram 
     * @param mc          MC histogram
     * @param checkPileup If true, check for pile-up (global flag)
     */
    virtual Bool_t ProcessEvent(const AliAODForwardMult* forward, 
				Int_t                    triggerMask,
				Bool_t                   isZero,
				Double_t                 vzMin, 
				Double_t                 vzMax, 
				const TH2D*              data, 
				const TH2D*              mc,
				Bool_t                   checkPileup);
    /** 
     * End of processing 
     * 
     * @param sums        List of sums
     * @param results     Output list of results
     * @param scheme      Normalisation scheme options
     * @param trigEff     Trigger efficiency 
     * @param trigEff0    0-bin trigger efficiency 
     * @param rootProj    If true, use TH2::ProjectionX
     * @param corrEmpty   Whether to correct for empty bins
     * @param triggerMask Trigger mask 
     * @param color       Marker colour 
     * @param marker      Marker style 
     * @param mclist      List of MC results 
     * @param truthlist   List of MC truth results 
     */
    virtual void End(TList*      sums, 
		     TList*      results,
		     UShort_t    scheme,
		     Double_t    trigEff,
		     Double_t    trigEff0,
		     Bool_t      rootProj,
		     Bool_t      corrEmpty, 
		     Int_t       triggerMask,
		     Int_t       marker,
		     Int_t       color,
		     TList*      mclist,
		     TList*      truthlist);
  protected: 
    TH2D*           fSumTruth;    //  Sum of primary histograms
    ClassDef(CentralityBin,2); // A centrality bin     
  };
  Bool_t fHasData; // whether we actually have data or not 
  ClassDef(AliMCTruthdNdetaTask,2); // Determine multiplicity in forward region
};

#endif
//
// Local Variables:
//  mode: C++
// End:
//
 AliMCTruthdNdetaTask.h:1
 AliMCTruthdNdetaTask.h:2
 AliMCTruthdNdetaTask.h:3
 AliMCTruthdNdetaTask.h:4
 AliMCTruthdNdetaTask.h:5
 AliMCTruthdNdetaTask.h:6
 AliMCTruthdNdetaTask.h:7
 AliMCTruthdNdetaTask.h:8
 AliMCTruthdNdetaTask.h:9
 AliMCTruthdNdetaTask.h:10
 AliMCTruthdNdetaTask.h:11
 AliMCTruthdNdetaTask.h:12
 AliMCTruthdNdetaTask.h:13
 AliMCTruthdNdetaTask.h:14
 AliMCTruthdNdetaTask.h:15
 AliMCTruthdNdetaTask.h:16
 AliMCTruthdNdetaTask.h:17
 AliMCTruthdNdetaTask.h:18
 AliMCTruthdNdetaTask.h:19
 AliMCTruthdNdetaTask.h:20
 AliMCTruthdNdetaTask.h:21
 AliMCTruthdNdetaTask.h:22
 AliMCTruthdNdetaTask.h:23
 AliMCTruthdNdetaTask.h:24
 AliMCTruthdNdetaTask.h:25
 AliMCTruthdNdetaTask.h:26
 AliMCTruthdNdetaTask.h:27
 AliMCTruthdNdetaTask.h:28
 AliMCTruthdNdetaTask.h:29
 AliMCTruthdNdetaTask.h:30
 AliMCTruthdNdetaTask.h:31
 AliMCTruthdNdetaTask.h:32
 AliMCTruthdNdetaTask.h:33
 AliMCTruthdNdetaTask.h:34
 AliMCTruthdNdetaTask.h:35
 AliMCTruthdNdetaTask.h:36
 AliMCTruthdNdetaTask.h:37
 AliMCTruthdNdetaTask.h:38
 AliMCTruthdNdetaTask.h:39
 AliMCTruthdNdetaTask.h:40
 AliMCTruthdNdetaTask.h:41
 AliMCTruthdNdetaTask.h:42
 AliMCTruthdNdetaTask.h:43
 AliMCTruthdNdetaTask.h:44
 AliMCTruthdNdetaTask.h:45
 AliMCTruthdNdetaTask.h:46
 AliMCTruthdNdetaTask.h:47
 AliMCTruthdNdetaTask.h:48
 AliMCTruthdNdetaTask.h:49
 AliMCTruthdNdetaTask.h:50
 AliMCTruthdNdetaTask.h:51
 AliMCTruthdNdetaTask.h:52
 AliMCTruthdNdetaTask.h:53
 AliMCTruthdNdetaTask.h:54
 AliMCTruthdNdetaTask.h:55
 AliMCTruthdNdetaTask.h:56
 AliMCTruthdNdetaTask.h:57
 AliMCTruthdNdetaTask.h:58
 AliMCTruthdNdetaTask.h:59
 AliMCTruthdNdetaTask.h:60
 AliMCTruthdNdetaTask.h:61
 AliMCTruthdNdetaTask.h:62
 AliMCTruthdNdetaTask.h:63
 AliMCTruthdNdetaTask.h:64
 AliMCTruthdNdetaTask.h:65
 AliMCTruthdNdetaTask.h:66
 AliMCTruthdNdetaTask.h:67
 AliMCTruthdNdetaTask.h:68
 AliMCTruthdNdetaTask.h:69
 AliMCTruthdNdetaTask.h:70
 AliMCTruthdNdetaTask.h:71
 AliMCTruthdNdetaTask.h:72
 AliMCTruthdNdetaTask.h:73
 AliMCTruthdNdetaTask.h:74
 AliMCTruthdNdetaTask.h:75
 AliMCTruthdNdetaTask.h:76
 AliMCTruthdNdetaTask.h:77
 AliMCTruthdNdetaTask.h:78
 AliMCTruthdNdetaTask.h:79
 AliMCTruthdNdetaTask.h:80
 AliMCTruthdNdetaTask.h:81
 AliMCTruthdNdetaTask.h:82
 AliMCTruthdNdetaTask.h:83
 AliMCTruthdNdetaTask.h:84
 AliMCTruthdNdetaTask.h:85
 AliMCTruthdNdetaTask.h:86
 AliMCTruthdNdetaTask.h:87
 AliMCTruthdNdetaTask.h:88
 AliMCTruthdNdetaTask.h:89
 AliMCTruthdNdetaTask.h:90
 AliMCTruthdNdetaTask.h:91
 AliMCTruthdNdetaTask.h:92
 AliMCTruthdNdetaTask.h:93
 AliMCTruthdNdetaTask.h:94
 AliMCTruthdNdetaTask.h:95
 AliMCTruthdNdetaTask.h:96
 AliMCTruthdNdetaTask.h:97
 AliMCTruthdNdetaTask.h:98
 AliMCTruthdNdetaTask.h:99
 AliMCTruthdNdetaTask.h:100
 AliMCTruthdNdetaTask.h:101
 AliMCTruthdNdetaTask.h:102
 AliMCTruthdNdetaTask.h:103
 AliMCTruthdNdetaTask.h:104
 AliMCTruthdNdetaTask.h:105
 AliMCTruthdNdetaTask.h:106
 AliMCTruthdNdetaTask.h:107
 AliMCTruthdNdetaTask.h:108
 AliMCTruthdNdetaTask.h:109
 AliMCTruthdNdetaTask.h:110
 AliMCTruthdNdetaTask.h:111
 AliMCTruthdNdetaTask.h:112
 AliMCTruthdNdetaTask.h:113
 AliMCTruthdNdetaTask.h:114
 AliMCTruthdNdetaTask.h:115
 AliMCTruthdNdetaTask.h:116
 AliMCTruthdNdetaTask.h:117
 AliMCTruthdNdetaTask.h:118
 AliMCTruthdNdetaTask.h:119
 AliMCTruthdNdetaTask.h:120
 AliMCTruthdNdetaTask.h:121
 AliMCTruthdNdetaTask.h:122
 AliMCTruthdNdetaTask.h:123
 AliMCTruthdNdetaTask.h:124
 AliMCTruthdNdetaTask.h:125
 AliMCTruthdNdetaTask.h:126
 AliMCTruthdNdetaTask.h:127
 AliMCTruthdNdetaTask.h:128
 AliMCTruthdNdetaTask.h:129
 AliMCTruthdNdetaTask.h:130
 AliMCTruthdNdetaTask.h:131
 AliMCTruthdNdetaTask.h:132
 AliMCTruthdNdetaTask.h:133
 AliMCTruthdNdetaTask.h:134
 AliMCTruthdNdetaTask.h:135
 AliMCTruthdNdetaTask.h:136
 AliMCTruthdNdetaTask.h:137
 AliMCTruthdNdetaTask.h:138
 AliMCTruthdNdetaTask.h:139
 AliMCTruthdNdetaTask.h:140
 AliMCTruthdNdetaTask.h:141
 AliMCTruthdNdetaTask.h:142
 AliMCTruthdNdetaTask.h:143
 AliMCTruthdNdetaTask.h:144
 AliMCTruthdNdetaTask.h:145
 AliMCTruthdNdetaTask.h:146
 AliMCTruthdNdetaTask.h:147
 AliMCTruthdNdetaTask.h:148
 AliMCTruthdNdetaTask.h:149
 AliMCTruthdNdetaTask.h:150
 AliMCTruthdNdetaTask.h:151
 AliMCTruthdNdetaTask.h:152
 AliMCTruthdNdetaTask.h:153
 AliMCTruthdNdetaTask.h:154
 AliMCTruthdNdetaTask.h:155
 AliMCTruthdNdetaTask.h:156
 AliMCTruthdNdetaTask.h:157
 AliMCTruthdNdetaTask.h:158
 AliMCTruthdNdetaTask.h:159
 AliMCTruthdNdetaTask.h:160
 AliMCTruthdNdetaTask.h:161
 AliMCTruthdNdetaTask.h:162
 AliMCTruthdNdetaTask.h:163
 AliMCTruthdNdetaTask.h:164
 AliMCTruthdNdetaTask.h:165
 AliMCTruthdNdetaTask.h:166
 AliMCTruthdNdetaTask.h:167
 AliMCTruthdNdetaTask.h:168
 AliMCTruthdNdetaTask.h:169
 AliMCTruthdNdetaTask.h:170
 AliMCTruthdNdetaTask.h:171
 AliMCTruthdNdetaTask.h:172
 AliMCTruthdNdetaTask.h:173
 AliMCTruthdNdetaTask.h:174
 AliMCTruthdNdetaTask.h:175
 AliMCTruthdNdetaTask.h:176
 AliMCTruthdNdetaTask.h:177
 AliMCTruthdNdetaTask.h:178
 AliMCTruthdNdetaTask.h:179
 AliMCTruthdNdetaTask.h:180
 AliMCTruthdNdetaTask.h:181
 AliMCTruthdNdetaTask.h:182
 AliMCTruthdNdetaTask.h:183
 AliMCTruthdNdetaTask.h:184
 AliMCTruthdNdetaTask.h:185
 AliMCTruthdNdetaTask.h:186
 AliMCTruthdNdetaTask.h:187
 AliMCTruthdNdetaTask.h:188
 AliMCTruthdNdetaTask.h:189
 AliMCTruthdNdetaTask.h:190
 AliMCTruthdNdetaTask.h:191
 AliMCTruthdNdetaTask.h:192
 AliMCTruthdNdetaTask.h:193
 AliMCTruthdNdetaTask.h:194
 AliMCTruthdNdetaTask.h:195
 AliMCTruthdNdetaTask.h:196
 AliMCTruthdNdetaTask.h:197
 AliMCTruthdNdetaTask.h:198
 AliMCTruthdNdetaTask.h:199
 AliMCTruthdNdetaTask.h:200
 AliMCTruthdNdetaTask.h:201
 AliMCTruthdNdetaTask.h:202