ROOT logo
/**
 * @file   AliForwardCreateResponseMatrices.h
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Thu Feb  7 00:56:02 2013
 * 
 * @brief  
 * 
 * @ingroup pwglf_forward_multdist
 */
/** 
 * @defgroup pwglf_forward_multdist Multiplicity Distributions
 * 
 * Code to do with @f$P(N_{ch})@f$ analysis
 *
 * @ingroup pwglf_forward_topical
 */
#ifndef ALIFORWARDCREATERESPONSEMATRICES_H
#define ALIFORWARDCREATERESPONSEMATRICES_H
  
#include "AliBaseAODTask.h"

class TH2D;

/**
 * Task to make the reponse matrices used by the multiplicity
 * distibution analysis
 * 
 * @ingroup pwglf_forward Tasks
 * @ingroup pwglf_forward_multdist
 * @todo Should not inherit from AliBasedNdetaTask 
 */
class AliForwardCreateResponseMatrices : public AliBaseAODTask
{
public:
  /** 
   * 
   * Default Constructor 
   * 
   */
  AliForwardCreateResponseMatrices();
  /**
   *  Constructor
   *
   */
  AliForwardCreateResponseMatrices(const char* name);
  /** 
   * 
   * Destructor
   * 
   */
  virtual ~AliForwardCreateResponseMatrices(){}
  /**
   *  Embedded Class begins here
   */
  struct Bin : public TNamed
  {
    /**
     * Default Constructor
     */
    Bin();
    /**
     * Constructor
     */
    Bin(Double_t etaLow, Double_t etaHigh);
    /**
     * Copy Constructor
     */ 
    Bin(const Bin&);
    /**
     * Assignment Operator
     */
    Bin&operator=(const Bin&){return*this;}
    /**
     * Destructor
     */
    ~Bin(){}
    /**
     * Define outputs of a single eta bin
     */
    virtual void CreateOutputObjectss(TList* cont,  Int_t max);
    /**
     * Process a single eta bin
     */    
    virtual void Process(TH1D* dndetaForward, TH1D* dndetaCentral, TH1D* normForward,   TH1D* normCentral, TH1D* dndetaMC, Double_t VtxZ, Bool_t selectedTrigger,  Bool_t isMCNSDm, Bool_t isESDNSD, const AliAODEvent& aodevent);
    Double_t fEtaLow;                  // low eta limit 
    Double_t fEtaHigh;                 // high eta limit 
    TH1D*    fHist;                    // multiplicity histogram 
    TH1D*    fHistMC;                  // multiplicity histogram MC truth primaries
    TH2D*    fAcceptance;              // histogram showing the 'holes' in acceptance. BinContent of 1 shows a hole, and BinContent of 10 shows data coverage
    TH2D*    fVtxZvsNdataBins;         // VtxZ vs. number of data acceptance bins (normalised to the eta range) 
    TH2D*    fResponseMatrix;          //Response matrix (MC truth vs. analysed multiplicity)
    TH2D*    fResponseMatrixPlus05;    //Response matrix with analysed multiplicity scaled up by 5%
    TH2D*    fResponseMatrixPlus075;   //Response matrix  with analysed multiplicity scaled up by 7.5%
    TH2D*    fResponseMatrixPlus10;    //Response matrix with analysed multiplicity scaled up by 10%
    TH2D*    fResponseMatrixMinus05;   //Response matrix with analysed multiplicity scaled down by 5%
    TH2D*    fResponseMatrixMinus075;  //Response matrix with analysed multiplicity scaled down by 7.55%
    TH2D*    fResponseMatrixMinus10;   //Response matrix with analysed multiplicity scaled down by 10%
    TH2D*    fResponseMatrixMinusSys;  //Response matrix with analysed multiplicity scaled up by event mult uncertainty
    TH2D*    fResponseMatrixPlusSys;   //Response matrix with analysed multiplicity scaled down by event mult uncertainty
    TH1D*    fESDNSD;                  //number of events found as NSD by the analysis vs. multiplicity
    TH1D*    fMCNSD;                   //number of events found as NSD by the MC truth vs. multiplicity
    TH1D*    fMCESDNSD;                //number of events found as NSD by both analysis and MC truth vs. multiplicity
    TH1D*    fTriggerBias;             // histogram for trigger vertex bias correction
   ClassDef(Bin,2); // Manager of data 
  };
  /**
   * Create Output Objects
   */
  Bool_t Book();
  /**
   * Create Output Objects
   */
  Bool_t PreEven() { fIsSelected = false; return true; }
  /**
   * User Exec
   */
  Bool_t Event(AliAODEvent& aod);
  /**
   * Terminate
   */
  Bool_t Finalize() { return true; }
  /** 
   * Add another eta bin to the task
   */
  void AddBin(Double_t etaLow, Double_t etaHigh){fBins.Add(new Bin(etaLow, etaHigh)); }
protected:
  /**
   * Copy Constructor
   *
   */
  AliForwardCreateResponseMatrices(const AliForwardCreateResponseMatrices& o);
  /**
   * Assignment operator
   *
   */
  AliForwardCreateResponseMatrices& 
  operator=(const AliForwardCreateResponseMatrices&);
  Bool_t CheckEvent(const AliAODForwardMult& fwd);

  TList  fBins;    // List of eta bins
  Bool_t fIsSelected;  // Did event pass the (analysis) cuts
  ClassDef(AliForwardCreateResponseMatrices, 4); 
};

#endif
// Local Variables:
//   mode: C++
// End:
 AliForwardCreateResponseMatrices.h:1
 AliForwardCreateResponseMatrices.h:2
 AliForwardCreateResponseMatrices.h:3
 AliForwardCreateResponseMatrices.h:4
 AliForwardCreateResponseMatrices.h:5
 AliForwardCreateResponseMatrices.h:6
 AliForwardCreateResponseMatrices.h:7
 AliForwardCreateResponseMatrices.h:8
 AliForwardCreateResponseMatrices.h:9
 AliForwardCreateResponseMatrices.h:10
 AliForwardCreateResponseMatrices.h:11
 AliForwardCreateResponseMatrices.h:12
 AliForwardCreateResponseMatrices.h:13
 AliForwardCreateResponseMatrices.h:14
 AliForwardCreateResponseMatrices.h:15
 AliForwardCreateResponseMatrices.h:16
 AliForwardCreateResponseMatrices.h:17
 AliForwardCreateResponseMatrices.h:18
 AliForwardCreateResponseMatrices.h:19
 AliForwardCreateResponseMatrices.h:20
 AliForwardCreateResponseMatrices.h:21
 AliForwardCreateResponseMatrices.h:22
 AliForwardCreateResponseMatrices.h:23
 AliForwardCreateResponseMatrices.h:24
 AliForwardCreateResponseMatrices.h:25
 AliForwardCreateResponseMatrices.h:26
 AliForwardCreateResponseMatrices.h:27
 AliForwardCreateResponseMatrices.h:28
 AliForwardCreateResponseMatrices.h:29
 AliForwardCreateResponseMatrices.h:30
 AliForwardCreateResponseMatrices.h:31
 AliForwardCreateResponseMatrices.h:32
 AliForwardCreateResponseMatrices.h:33
 AliForwardCreateResponseMatrices.h:34
 AliForwardCreateResponseMatrices.h:35
 AliForwardCreateResponseMatrices.h:36
 AliForwardCreateResponseMatrices.h:37
 AliForwardCreateResponseMatrices.h:38
 AliForwardCreateResponseMatrices.h:39
 AliForwardCreateResponseMatrices.h:40
 AliForwardCreateResponseMatrices.h:41
 AliForwardCreateResponseMatrices.h:42
 AliForwardCreateResponseMatrices.h:43
 AliForwardCreateResponseMatrices.h:44
 AliForwardCreateResponseMatrices.h:45
 AliForwardCreateResponseMatrices.h:46
 AliForwardCreateResponseMatrices.h:47
 AliForwardCreateResponseMatrices.h:48
 AliForwardCreateResponseMatrices.h:49
 AliForwardCreateResponseMatrices.h:50
 AliForwardCreateResponseMatrices.h:51
 AliForwardCreateResponseMatrices.h:52
 AliForwardCreateResponseMatrices.h:53
 AliForwardCreateResponseMatrices.h:54
 AliForwardCreateResponseMatrices.h:55
 AliForwardCreateResponseMatrices.h:56
 AliForwardCreateResponseMatrices.h:57
 AliForwardCreateResponseMatrices.h:58
 AliForwardCreateResponseMatrices.h:59
 AliForwardCreateResponseMatrices.h:60
 AliForwardCreateResponseMatrices.h:61
 AliForwardCreateResponseMatrices.h:62
 AliForwardCreateResponseMatrices.h:63
 AliForwardCreateResponseMatrices.h:64
 AliForwardCreateResponseMatrices.h:65
 AliForwardCreateResponseMatrices.h:66
 AliForwardCreateResponseMatrices.h:67
 AliForwardCreateResponseMatrices.h:68
 AliForwardCreateResponseMatrices.h:69
 AliForwardCreateResponseMatrices.h:70
 AliForwardCreateResponseMatrices.h:71
 AliForwardCreateResponseMatrices.h:72
 AliForwardCreateResponseMatrices.h:73
 AliForwardCreateResponseMatrices.h:74
 AliForwardCreateResponseMatrices.h:75
 AliForwardCreateResponseMatrices.h:76
 AliForwardCreateResponseMatrices.h:77
 AliForwardCreateResponseMatrices.h:78
 AliForwardCreateResponseMatrices.h:79
 AliForwardCreateResponseMatrices.h:80
 AliForwardCreateResponseMatrices.h:81
 AliForwardCreateResponseMatrices.h:82
 AliForwardCreateResponseMatrices.h:83
 AliForwardCreateResponseMatrices.h:84
 AliForwardCreateResponseMatrices.h:85
 AliForwardCreateResponseMatrices.h:86
 AliForwardCreateResponseMatrices.h:87
 AliForwardCreateResponseMatrices.h:88
 AliForwardCreateResponseMatrices.h:89
 AliForwardCreateResponseMatrices.h:90
 AliForwardCreateResponseMatrices.h:91
 AliForwardCreateResponseMatrices.h:92
 AliForwardCreateResponseMatrices.h:93
 AliForwardCreateResponseMatrices.h:94
 AliForwardCreateResponseMatrices.h:95
 AliForwardCreateResponseMatrices.h:96
 AliForwardCreateResponseMatrices.h:97
 AliForwardCreateResponseMatrices.h:98
 AliForwardCreateResponseMatrices.h:99
 AliForwardCreateResponseMatrices.h:100
 AliForwardCreateResponseMatrices.h:101
 AliForwardCreateResponseMatrices.h:102
 AliForwardCreateResponseMatrices.h:103
 AliForwardCreateResponseMatrices.h:104
 AliForwardCreateResponseMatrices.h:105
 AliForwardCreateResponseMatrices.h:106
 AliForwardCreateResponseMatrices.h:107
 AliForwardCreateResponseMatrices.h:108
 AliForwardCreateResponseMatrices.h:109
 AliForwardCreateResponseMatrices.h:110
 AliForwardCreateResponseMatrices.h:111
 AliForwardCreateResponseMatrices.h:112
 AliForwardCreateResponseMatrices.h:113
 AliForwardCreateResponseMatrices.h:114
 AliForwardCreateResponseMatrices.h:115
 AliForwardCreateResponseMatrices.h:116
 AliForwardCreateResponseMatrices.h:117
 AliForwardCreateResponseMatrices.h:118
 AliForwardCreateResponseMatrices.h:119
 AliForwardCreateResponseMatrices.h:120
 AliForwardCreateResponseMatrices.h:121
 AliForwardCreateResponseMatrices.h:122
 AliForwardCreateResponseMatrices.h:123
 AliForwardCreateResponseMatrices.h:124
 AliForwardCreateResponseMatrices.h:125
 AliForwardCreateResponseMatrices.h:126
 AliForwardCreateResponseMatrices.h:127
 AliForwardCreateResponseMatrices.h:128
 AliForwardCreateResponseMatrices.h:129
 AliForwardCreateResponseMatrices.h:130
 AliForwardCreateResponseMatrices.h:131
 AliForwardCreateResponseMatrices.h:132
 AliForwardCreateResponseMatrices.h:133
 AliForwardCreateResponseMatrices.h:134
 AliForwardCreateResponseMatrices.h:135
 AliForwardCreateResponseMatrices.h:136
 AliForwardCreateResponseMatrices.h:137
 AliForwardCreateResponseMatrices.h:138
 AliForwardCreateResponseMatrices.h:139
 AliForwardCreateResponseMatrices.h:140
 AliForwardCreateResponseMatrices.h:141
 AliForwardCreateResponseMatrices.h:142
 AliForwardCreateResponseMatrices.h:143
 AliForwardCreateResponseMatrices.h:144
 AliForwardCreateResponseMatrices.h:145
 AliForwardCreateResponseMatrices.h:146
 AliForwardCreateResponseMatrices.h:147
 AliForwardCreateResponseMatrices.h:148