ROOT logo
//-*- Mode: C++ -*-

// $Id: AliMultiplicityCorrelations.h  $
#ifndef ALIMULTIPLICITYCORRELATIONS_H
#define ALIMULTIPLICITYCORRELATIONS_H


/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
 
// Correlation plots for multiplicity studies
// Authors: Jochen Thaeder <jochen@thaeder.de>

#include "AliLog.h"

#include "AliESDtrackCuts.h"
#include "AliESDEvent.h"
#include "AliESDVZERO.h"
#include "AliESDZDC.h"
#include "AliMultiplicity.h"
#include "TList.h"

class TH1;

class AliMultiplicityCorrelations : public TNamed {
public:
  
  /*
   * ---------------------------------------------------------------------------------
   *                            Constructor / Destructor
   * ---------------------------------------------------------------------------------
   */

  /** Default Constructor */
  AliMultiplicityCorrelations();
  
  /** Constructor */
  AliMultiplicityCorrelations(Char_t* name, Char_t* title);
  
  /** Destructor */
  ~AliMultiplicityCorrelations();

  /*
   * ---------------------------------------------------------------------------------
   *                         Initialize / Setup / Reset - public
   * ---------------------------------------------------------------------------------
   */

  /** Initialize class and members */
  Int_t Initialize() { return Initialize(""); }

  /** Initialize class and members */
  Int_t Initialize( const Char_t* listName );

  /*
   * ---------------------------------------------------------------------------------
   *                                Setter - public
   * ---------------------------------------------------------------------------------
   */

  void SetIsMC() { fIsMC = kTRUE; }

  /** Clean event sample */
  void SetCleanSample(Float_t min, Float_t max) { fCleanSample = kTRUE; fCleanMinKeep = min; fCleanMaxKeep = max; }

  /** Set ESD track cuts */
  void SetESDTrackCuts(AliESDtrackCuts *cuts) { fESDTrackCuts  = cuts; }
  void SetESDTrackCuts2(AliESDtrackCuts *cuts) { fESDTrackCuts2 = cuts; }

  /** Set SPD clusters from inner and outer layer */
  void SetSPDClusters(Float_t inner, Float_t outer) { fSpdNClustersInner = inner; fSpdNClustersOuter = outer; }

  /** Set Binning of VZERO */
  void SetBinningVzero(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
    fVzeroBinning = i; fVzeroBinningMin = f1; fVzeroBinningMax = f2;
  }

  /** Set Binning of TPC */
  void SetBinningTpc(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
    fTpcBinning = i; fTpcBinningMin = f1; fTpcBinningMax = f2;
  }

  /** Set Binning of ZDC */
  void SetBinningZdc(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
    fZdcBinning = i; fZdcBinningMin = f1; fZdcBinningMax = f2;
  }

  /** Set Binning of ZEM */
  void SetBinningZem(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
    fZemBinning = i; fZemBinningMin = f1; fZemBinningMax = f2;
  }

  /** Set Binning of SPD */
  void SetBinningSpd(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
    fSpdBinning = i; fSpdBinningMin = f1; fSpdBinningMax = f2;
  }

  /** Enable / Disable detectors */
  void SetProcessSPD(Bool_t b = kTRUE)  { fProcessSPD = b; }
  void SetProcessTPC(Bool_t b = kTRUE)  { fProcessTPC = b; }
  void SetProcessZDC(Bool_t b = kTRUE)  { fProcessZDC = b; }
  void SetProcessVZERO(Bool_t b = kTRUE){ fProcessVZERO = b; }

  /*
   * ---------------------------------------------------------------------------------
   *                                 Getter - public
   * ---------------------------------------------------------------------------------
   */

  /** Get List of histograms */
  TList*  GetHistList()    const { return fHistList; }
  Int_t   GetNTracks()     const { return fEsdTracksA; }
  Int_t   GetNTracksTPC()  const { return fTpcTracksA; }
  Float_t GetVZEROA()      const { return fVzeroMultA; }
  Float_t GetVZEROC()      const { return fVzeroMultC; }
  Float_t GetVZEROCorr()   const { return fVzeroMult; }

  /*
   * ---------------------------------------------------------------------------------
   *                             Process - public
   * ---------------------------------------------------------------------------------
   */

  /** Process current event */
  Int_t ProcessEvent( AliESDEvent *esd );

  ///////////////////////////////////////////////////////////////////////////////////
  
  /** Corrected VZERO amplitude*/
  Float_t GetCorrVZERO(Float_t &v0CorrResc);

  /** Corrected SPD amplitude*/
  Float_t GetCorrSPD2(Float_t spd2raw,Float_t zv) const;

 private:
 
  /** copy constructor prohibited */
  AliMultiplicityCorrelations(const AliMultiplicityCorrelations&);
  
  /** assignment operator prohibited */
  AliMultiplicityCorrelations& operator=(const AliMultiplicityCorrelations&);

  /*
   * ---------------------------------------------------------------------------------
   *                         Initialize / Setup / Reset - private
   * ---------------------------------------------------------------------------------
   */

  /** Add esd object
   * param esd Ptr to AliESDEvent
   * return kTRUE if AliESDEvent and Vertex present
   */
  Bool_t AddESDEvent( AliESDEvent* esd );

  /** Setup histograms */
  Int_t SetupHistograms();

  /** Setup VZERO histograms */
  Int_t SetupVZERO();

  /** Setup ZDC histograms */
  Int_t SetupZDC();

  /** Setup TPC histograms */
  Int_t SetupTPC();

  /** Setup correlation histograms */
  Int_t SetupCorrelations();
  
  /** Setup SPD histograms */
  Int_t SetupSPD();

  /*
   * ---------------------------------------------------------------------------------
   *                             Process - private
   * ---------------------------------------------------------------------------------
   */

  /** Process current event - TPC */
  Int_t ProcessTPC();

  /** Process current event - SPD */
  Int_t ProcessSPD();
  
  /** Process current event - VZERO */
  Int_t ProcessVZERO();

  /** Process current event - ZDC and correlations */
  Int_t ProcessZDC();
  
  /*
   * ---------------------------------------------------------------------------------
   *                             Members - private
   * ---------------------------------------------------------------------------------
   */

  TList           *fHistList;             //  List of histograms

  Bool_t           fIsMC;                 //  If it is MC 

  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

  AliESDEvent     *fESDEvent;             //! Ptr to AliESDEvent
  AliESDZDC       *fESDZDC;               //! Ptr to ZDC object in AliESDEvent 
  AliESDVZERO     *fESDVZERO;             //! Ptr to VZERO object in AliESDEvent
  AliMultiplicity *fESDMultiplicity;      //! Ptr to AliMultiplicity in AliESDEvent
  AliESDtrackCuts *fESDTrackCuts;         //! Ptr to AliESDtrackCuts
  AliESDtrackCuts *fESDTrackCuts2;        //! Ptr to AliESDtrackCuts 2
  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

  Bool_t           fCleanSample;          //  Enables 'grass' cleaning
  Float_t          fCleanMinKeep;         //  Min of kept region
  Float_t          fCleanMaxKeep;         //  Max of kept region

  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

  Int_t            fRunNo;                //  RunNo for corrections
  Int_t            fCurrentRunNo;         //  Current RunNo

  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

  Bool_t           fProcessTPC;           //  Process TPC information
  Bool_t           fProcessSPD;           //  Process SPD information
  Bool_t           fProcessVZERO;         //  Process VZERO information
  Bool_t           fProcessZDC;           //  Process ZDC information

  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

  Int_t            fEsdTracks;            //  N ESD tracks
  Int_t            fEsdTracksA;           //  N ESD tracks accepted
  Int_t            fTpcTracks;            //  N TPC tracks
  Int_t            fTpcTracksA;           //  N TPC tracks accepted

  Float_t          fVzeroMult;            //  VZERO multiplicity
  Float_t          fVzeroMultA;           //  VZERO A multiplicity
  Float_t          fVzeroMultC;           //  VZERO C multiplicity

  Float_t          fSpdNClusters;         //  Spd N clusters
  Float_t          fSpdNClustersInner;    //  Spd N clusters Inner 
  Float_t          fSpdNClustersOuter;    //  Spd N clusters Outer

  // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

  /** Binnning VZERO */
  Int_t   fVzeroBinning;                  // VZERO Binning nbin
  Float_t fVzeroBinningMin;               // VZERO Binning min  
  Float_t fVzeroBinningMax;               // VZERO Binning max

  /** Binnning TPC */
  Int_t   fTpcBinning;                    // TPC Binning nbin
  Float_t fTpcBinningMin;                 // TPC Binning min
  Float_t fTpcBinningMax;                 // TPC Binning max

  /** Binnning ZDC */
  Int_t   fZdcBinning;                    // ZDC Binning nbin
  Float_t fZdcBinningMin;                 // ZDC Binning min
  Float_t fZdcBinningMax;                 // ZDC Binning max

  /** Binnning ZEM */
  Int_t   fZemBinning;                    // ZEM Binning nbin
  Float_t fZemBinningMin;                 // ZEM Binning min
  Float_t fZemBinningMax;                 // ZEM Binning may

  /** Binnning SPD */
  Int_t   fSpdBinning;                    // SPD Binning nbin
  Float_t fSpdBinningMin;                 // SPD Binning min
  Float_t fSpdBinningMax;                 // SPD Binning max
  
  ClassDef(AliMultiplicityCorrelations, 3);
};
#endif
 AliMultiplicityCorrelations.h:1
 AliMultiplicityCorrelations.h:2
 AliMultiplicityCorrelations.h:3
 AliMultiplicityCorrelations.h:4
 AliMultiplicityCorrelations.h:5
 AliMultiplicityCorrelations.h:6
 AliMultiplicityCorrelations.h:7
 AliMultiplicityCorrelations.h:8
 AliMultiplicityCorrelations.h:9
 AliMultiplicityCorrelations.h:10
 AliMultiplicityCorrelations.h:11
 AliMultiplicityCorrelations.h:12
 AliMultiplicityCorrelations.h:13
 AliMultiplicityCorrelations.h:14
 AliMultiplicityCorrelations.h:15
 AliMultiplicityCorrelations.h:16
 AliMultiplicityCorrelations.h:17
 AliMultiplicityCorrelations.h:18
 AliMultiplicityCorrelations.h:19
 AliMultiplicityCorrelations.h:20
 AliMultiplicityCorrelations.h:21
 AliMultiplicityCorrelations.h:22
 AliMultiplicityCorrelations.h:23
 AliMultiplicityCorrelations.h:24
 AliMultiplicityCorrelations.h:25
 AliMultiplicityCorrelations.h:26
 AliMultiplicityCorrelations.h:27
 AliMultiplicityCorrelations.h:28
 AliMultiplicityCorrelations.h:29
 AliMultiplicityCorrelations.h:30
 AliMultiplicityCorrelations.h:31
 AliMultiplicityCorrelations.h:32
 AliMultiplicityCorrelations.h:33
 AliMultiplicityCorrelations.h:34
 AliMultiplicityCorrelations.h:35
 AliMultiplicityCorrelations.h:36
 AliMultiplicityCorrelations.h:37
 AliMultiplicityCorrelations.h:38
 AliMultiplicityCorrelations.h:39
 AliMultiplicityCorrelations.h:40
 AliMultiplicityCorrelations.h:41
 AliMultiplicityCorrelations.h:42
 AliMultiplicityCorrelations.h:43
 AliMultiplicityCorrelations.h:44
 AliMultiplicityCorrelations.h:45
 AliMultiplicityCorrelations.h:46
 AliMultiplicityCorrelations.h:47
 AliMultiplicityCorrelations.h:48
 AliMultiplicityCorrelations.h:49
 AliMultiplicityCorrelations.h:50
 AliMultiplicityCorrelations.h:51
 AliMultiplicityCorrelations.h:52
 AliMultiplicityCorrelations.h:53
 AliMultiplicityCorrelations.h:54
 AliMultiplicityCorrelations.h:55
 AliMultiplicityCorrelations.h:56
 AliMultiplicityCorrelations.h:57
 AliMultiplicityCorrelations.h:58
 AliMultiplicityCorrelations.h:59
 AliMultiplicityCorrelations.h:60
 AliMultiplicityCorrelations.h:61
 AliMultiplicityCorrelations.h:62
 AliMultiplicityCorrelations.h:63
 AliMultiplicityCorrelations.h:64
 AliMultiplicityCorrelations.h:65
 AliMultiplicityCorrelations.h:66
 AliMultiplicityCorrelations.h:67
 AliMultiplicityCorrelations.h:68
 AliMultiplicityCorrelations.h:69
 AliMultiplicityCorrelations.h:70
 AliMultiplicityCorrelations.h:71
 AliMultiplicityCorrelations.h:72
 AliMultiplicityCorrelations.h:73
 AliMultiplicityCorrelations.h:74
 AliMultiplicityCorrelations.h:75
 AliMultiplicityCorrelations.h:76
 AliMultiplicityCorrelations.h:77
 AliMultiplicityCorrelations.h:78
 AliMultiplicityCorrelations.h:79
 AliMultiplicityCorrelations.h:80
 AliMultiplicityCorrelations.h:81
 AliMultiplicityCorrelations.h:82
 AliMultiplicityCorrelations.h:83
 AliMultiplicityCorrelations.h:84
 AliMultiplicityCorrelations.h:85
 AliMultiplicityCorrelations.h:86
 AliMultiplicityCorrelations.h:87
 AliMultiplicityCorrelations.h:88
 AliMultiplicityCorrelations.h:89
 AliMultiplicityCorrelations.h:90
 AliMultiplicityCorrelations.h:91
 AliMultiplicityCorrelations.h:92
 AliMultiplicityCorrelations.h:93
 AliMultiplicityCorrelations.h:94
 AliMultiplicityCorrelations.h:95
 AliMultiplicityCorrelations.h:96
 AliMultiplicityCorrelations.h:97
 AliMultiplicityCorrelations.h:98
 AliMultiplicityCorrelations.h:99
 AliMultiplicityCorrelations.h:100
 AliMultiplicityCorrelations.h:101
 AliMultiplicityCorrelations.h:102
 AliMultiplicityCorrelations.h:103
 AliMultiplicityCorrelations.h:104
 AliMultiplicityCorrelations.h:105
 AliMultiplicityCorrelations.h:106
 AliMultiplicityCorrelations.h:107
 AliMultiplicityCorrelations.h:108
 AliMultiplicityCorrelations.h:109
 AliMultiplicityCorrelations.h:110
 AliMultiplicityCorrelations.h:111
 AliMultiplicityCorrelations.h:112
 AliMultiplicityCorrelations.h:113
 AliMultiplicityCorrelations.h:114
 AliMultiplicityCorrelations.h:115
 AliMultiplicityCorrelations.h:116
 AliMultiplicityCorrelations.h:117
 AliMultiplicityCorrelations.h:118
 AliMultiplicityCorrelations.h:119
 AliMultiplicityCorrelations.h:120
 AliMultiplicityCorrelations.h:121
 AliMultiplicityCorrelations.h:122
 AliMultiplicityCorrelations.h:123
 AliMultiplicityCorrelations.h:124
 AliMultiplicityCorrelations.h:125
 AliMultiplicityCorrelations.h:126
 AliMultiplicityCorrelations.h:127
 AliMultiplicityCorrelations.h:128
 AliMultiplicityCorrelations.h:129
 AliMultiplicityCorrelations.h:130
 AliMultiplicityCorrelations.h:131
 AliMultiplicityCorrelations.h:132
 AliMultiplicityCorrelations.h:133
 AliMultiplicityCorrelations.h:134
 AliMultiplicityCorrelations.h:135
 AliMultiplicityCorrelations.h:136
 AliMultiplicityCorrelations.h:137
 AliMultiplicityCorrelations.h:138
 AliMultiplicityCorrelations.h:139
 AliMultiplicityCorrelations.h:140
 AliMultiplicityCorrelations.h:141
 AliMultiplicityCorrelations.h:142
 AliMultiplicityCorrelations.h:143
 AliMultiplicityCorrelations.h:144
 AliMultiplicityCorrelations.h:145
 AliMultiplicityCorrelations.h:146
 AliMultiplicityCorrelations.h:147
 AliMultiplicityCorrelations.h:148
 AliMultiplicityCorrelations.h:149
 AliMultiplicityCorrelations.h:150
 AliMultiplicityCorrelations.h:151
 AliMultiplicityCorrelations.h:152
 AliMultiplicityCorrelations.h:153
 AliMultiplicityCorrelations.h:154
 AliMultiplicityCorrelations.h:155
 AliMultiplicityCorrelations.h:156
 AliMultiplicityCorrelations.h:157
 AliMultiplicityCorrelations.h:158
 AliMultiplicityCorrelations.h:159
 AliMultiplicityCorrelations.h:160
 AliMultiplicityCorrelations.h:161
 AliMultiplicityCorrelations.h:162
 AliMultiplicityCorrelations.h:163
 AliMultiplicityCorrelations.h:164
 AliMultiplicityCorrelations.h:165
 AliMultiplicityCorrelations.h:166
 AliMultiplicityCorrelations.h:167
 AliMultiplicityCorrelations.h:168
 AliMultiplicityCorrelations.h:169
 AliMultiplicityCorrelations.h:170
 AliMultiplicityCorrelations.h:171
 AliMultiplicityCorrelations.h:172
 AliMultiplicityCorrelations.h:173
 AliMultiplicityCorrelations.h:174
 AliMultiplicityCorrelations.h:175
 AliMultiplicityCorrelations.h:176
 AliMultiplicityCorrelations.h:177
 AliMultiplicityCorrelations.h:178
 AliMultiplicityCorrelations.h:179
 AliMultiplicityCorrelations.h:180
 AliMultiplicityCorrelations.h:181
 AliMultiplicityCorrelations.h:182
 AliMultiplicityCorrelations.h:183
 AliMultiplicityCorrelations.h:184
 AliMultiplicityCorrelations.h:185
 AliMultiplicityCorrelations.h:186
 AliMultiplicityCorrelations.h:187
 AliMultiplicityCorrelations.h:188
 AliMultiplicityCorrelations.h:189
 AliMultiplicityCorrelations.h:190
 AliMultiplicityCorrelations.h:191
 AliMultiplicityCorrelations.h:192
 AliMultiplicityCorrelations.h:193
 AliMultiplicityCorrelations.h:194
 AliMultiplicityCorrelations.h:195
 AliMultiplicityCorrelations.h:196
 AliMultiplicityCorrelations.h:197
 AliMultiplicityCorrelations.h:198
 AliMultiplicityCorrelations.h:199
 AliMultiplicityCorrelations.h:200
 AliMultiplicityCorrelations.h:201
 AliMultiplicityCorrelations.h:202
 AliMultiplicityCorrelations.h:203
 AliMultiplicityCorrelations.h:204
 AliMultiplicityCorrelations.h:205
 AliMultiplicityCorrelations.h:206
 AliMultiplicityCorrelations.h:207
 AliMultiplicityCorrelations.h:208
 AliMultiplicityCorrelations.h:209
 AliMultiplicityCorrelations.h:210
 AliMultiplicityCorrelations.h:211
 AliMultiplicityCorrelations.h:212
 AliMultiplicityCorrelations.h:213
 AliMultiplicityCorrelations.h:214
 AliMultiplicityCorrelations.h:215
 AliMultiplicityCorrelations.h:216
 AliMultiplicityCorrelations.h:217
 AliMultiplicityCorrelations.h:218
 AliMultiplicityCorrelations.h:219
 AliMultiplicityCorrelations.h:220
 AliMultiplicityCorrelations.h:221
 AliMultiplicityCorrelations.h:222
 AliMultiplicityCorrelations.h:223
 AliMultiplicityCorrelations.h:224
 AliMultiplicityCorrelations.h:225
 AliMultiplicityCorrelations.h:226
 AliMultiplicityCorrelations.h:227
 AliMultiplicityCorrelations.h:228
 AliMultiplicityCorrelations.h:229
 AliMultiplicityCorrelations.h:230
 AliMultiplicityCorrelations.h:231
 AliMultiplicityCorrelations.h:232
 AliMultiplicityCorrelations.h:233
 AliMultiplicityCorrelations.h:234
 AliMultiplicityCorrelations.h:235
 AliMultiplicityCorrelations.h:236
 AliMultiplicityCorrelations.h:237
 AliMultiplicityCorrelations.h:238
 AliMultiplicityCorrelations.h:239
 AliMultiplicityCorrelations.h:240
 AliMultiplicityCorrelations.h:241
 AliMultiplicityCorrelations.h:242
 AliMultiplicityCorrelations.h:243
 AliMultiplicityCorrelations.h:244
 AliMultiplicityCorrelations.h:245
 AliMultiplicityCorrelations.h:246
 AliMultiplicityCorrelations.h:247
 AliMultiplicityCorrelations.h:248
 AliMultiplicityCorrelations.h:249
 AliMultiplicityCorrelations.h:250
 AliMultiplicityCorrelations.h:251
 AliMultiplicityCorrelations.h:252
 AliMultiplicityCorrelations.h:253
 AliMultiplicityCorrelations.h:254
 AliMultiplicityCorrelations.h:255
 AliMultiplicityCorrelations.h:256
 AliMultiplicityCorrelations.h:257
 AliMultiplicityCorrelations.h:258
 AliMultiplicityCorrelations.h:259
 AliMultiplicityCorrelations.h:260
 AliMultiplicityCorrelations.h:261
 AliMultiplicityCorrelations.h:262
 AliMultiplicityCorrelations.h:263
 AliMultiplicityCorrelations.h:264
 AliMultiplicityCorrelations.h:265
 AliMultiplicityCorrelations.h:266
 AliMultiplicityCorrelations.h:267
 AliMultiplicityCorrelations.h:268
 AliMultiplicityCorrelations.h:269
 AliMultiplicityCorrelations.h:270
 AliMultiplicityCorrelations.h:271