ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/* $Id$ */

/*****************************************************************
  AliFlowEvent: Event container for flow analysis                  
                                     
  origin:   Mikolaj Krzewicki  (mikolaj.krzewicki@cern.ch)
  mods:     Redmer A. Bertens (rbertens@cern.ch)
*****************************************************************/

#ifndef ALIFLOWEVENT_H
#define ALIFLOWEVENT_H

class AliFlowTrackCuts;
class AliFlowTrack;
class AliCFManager;
class AliVEvent;
class AliMCEvent;
class AliESDEvent;
class AliAODEvent;
class AliMultiplicity;
class AliESDPmdTrack;
class AliFlowVector;
class TH2F;
class TArrayD;

#include "AliFlowEventSimple.h"

class AliFlowEvent: public AliFlowEventSimple {
public:

  enum KineSource { kNoKine, kESDkine, kMCkine };

  AliFlowEvent();
  AliFlowEvent(Int_t n);
  AliFlowEvent(const AliFlowEvent& event);
  AliFlowEvent& operator=(const AliFlowEvent& event);
  virtual  ~AliFlowEvent() {}

  //deprecated
  AliFlowEvent( const AliMCEvent* anInput,
                const AliCFManager* rpCFManager=NULL,
                const AliCFManager* poiCFManager=NULL ); //use CF(2x)
  AliFlowEvent( const AliESDEvent* anInput,  
                const AliCFManager* rpCFManager=NULL, 
                const AliCFManager* poiCFManager=NULL ); //use CF(2x)
  AliFlowEvent( const AliAODEvent* anInput, 
                const AliCFManager* rpCFManager=NULL, 
                const AliCFManager* poiCFManager=NULL );  //use CF(2x)
  AliFlowEvent( const AliESDEvent* anInput,
                const AliCFManager* poiCFManager,
                Bool_t hybrid);
  AliFlowEvent( const AliESDEvent* anInput, 
                const AliMCEvent* anInputMc, 
                KineSource anOption=kNoKine,
                const AliCFManager* rpCFManager=NULL, 
                const AliCFManager* poiCFManager=NULL );  //use CF(2x)
  AliFlowEvent( const AliESDEvent* anInput,
                const AliMultiplicity* anInputTracklets,
                const AliCFManager* poiCFManager );
  AliFlowEvent( const AliESDEvent* anInput,
                const TH2F* anInputFMDhist,
                const AliCFManager* poiCFManager );
  //pmd
  AliFlowEvent( const AliESDEvent* anInput,
                const AliESDPmdTrack *pmdtracks,
                const AliCFManager* poiCFManager );
  //pmd
  //end of deprecated

  AliFlowEvent( AliFlowTrackCuts* rpCuts,
                AliFlowTrackCuts* poiCuts );
  
  void Fill( AliFlowTrackCuts* rpCuts,
             AliFlowTrackCuts* poiCuts );

  void FindDaughters(Bool_t keepDaughtersInRPselection=kFALSE);

  void SetMCReactionPlaneAngle(const AliMCEvent* mcEvent);
  using AliFlowEventSimple::SetMCReactionPlaneAngle;

  AliFlowTrack* GetTrack( Int_t i );

  void InsertTrack(AliFlowTrack*);

  virtual AliFlowVector GetQ(Int_t n=2, TList *weightsList=NULL, Bool_t usePhiWeights=kFALSE, Bool_t usePtWeights=kFALSE, Bool_t useEtaWeights=kFALSE);
  virtual void Get2Qsub(AliFlowVector* Qarray, Int_t n = 2, TList *weightsList = 0x0, Bool_t usePhiWeights = 0x0, Bool_t usePtWeights = 0x0, Bool_t useEtaWeights = 0x0);
  void SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts);

  virtual void ClearFast();
  virtual void ClearCachedRun();

protected:
  AliFlowTrack* ReuseTrack( Int_t i);

private:
  Int_t         fApplyRecentering;      // apply recentering of q-vectors? 2010 is 10h style, 2011 is 11h style
  Int_t         fCachedRun;             //! cached calibration info for vzero
  Int_t         fVZEROcentralityBin;    //! centrality bin for the current event 
  Float_t       fMeanQ[9][2][2];        //! recentering
  Float_t       fWidthQ[9][2][2];       //! recentering
  Float_t       fMeanQv3[9][2][2];      //! recentering
  Float_t       fWidthQv3[9][2][2];     //! recentering
  AliVEvent*    fEvent;                 //! current event
  TArrayD*      fChi2A;                 //! chi vs cent for vzero A ep_2
  TArrayD*      fChi2C;                 //! chi vs cent for vzero C ep_2
  TArrayD*      fChi3A;                 //! chi vs cent for vzero A ep_3
  TArrayD*      fChi3C;                 //! chi vs cent for vzero C ep_3


  ClassDef(AliFlowEvent,4)
};

#endif


 AliFlowEvent.h:1
 AliFlowEvent.h:2
 AliFlowEvent.h:3
 AliFlowEvent.h:4
 AliFlowEvent.h:5
 AliFlowEvent.h:6
 AliFlowEvent.h:7
 AliFlowEvent.h:8
 AliFlowEvent.h:9
 AliFlowEvent.h:10
 AliFlowEvent.h:11
 AliFlowEvent.h:12
 AliFlowEvent.h:13
 AliFlowEvent.h:14
 AliFlowEvent.h:15
 AliFlowEvent.h:16
 AliFlowEvent.h:17
 AliFlowEvent.h:18
 AliFlowEvent.h:19
 AliFlowEvent.h:20
 AliFlowEvent.h:21
 AliFlowEvent.h:22
 AliFlowEvent.h:23
 AliFlowEvent.h:24
 AliFlowEvent.h:25
 AliFlowEvent.h:26
 AliFlowEvent.h:27
 AliFlowEvent.h:28
 AliFlowEvent.h:29
 AliFlowEvent.h:30
 AliFlowEvent.h:31
 AliFlowEvent.h:32
 AliFlowEvent.h:33
 AliFlowEvent.h:34
 AliFlowEvent.h:35
 AliFlowEvent.h:36
 AliFlowEvent.h:37
 AliFlowEvent.h:38
 AliFlowEvent.h:39
 AliFlowEvent.h:40
 AliFlowEvent.h:41
 AliFlowEvent.h:42
 AliFlowEvent.h:43
 AliFlowEvent.h:44
 AliFlowEvent.h:45
 AliFlowEvent.h:46
 AliFlowEvent.h:47
 AliFlowEvent.h:48
 AliFlowEvent.h:49
 AliFlowEvent.h:50
 AliFlowEvent.h:51
 AliFlowEvent.h:52
 AliFlowEvent.h:53
 AliFlowEvent.h:54
 AliFlowEvent.h:55
 AliFlowEvent.h:56
 AliFlowEvent.h:57
 AliFlowEvent.h:58
 AliFlowEvent.h:59
 AliFlowEvent.h:60
 AliFlowEvent.h:61
 AliFlowEvent.h:62
 AliFlowEvent.h:63
 AliFlowEvent.h:64
 AliFlowEvent.h:65
 AliFlowEvent.h:66
 AliFlowEvent.h:67
 AliFlowEvent.h:68
 AliFlowEvent.h:69
 AliFlowEvent.h:70
 AliFlowEvent.h:71
 AliFlowEvent.h:72
 AliFlowEvent.h:73
 AliFlowEvent.h:74
 AliFlowEvent.h:75
 AliFlowEvent.h:76
 AliFlowEvent.h:77
 AliFlowEvent.h:78
 AliFlowEvent.h:79
 AliFlowEvent.h:80
 AliFlowEvent.h:81
 AliFlowEvent.h:82
 AliFlowEvent.h:83
 AliFlowEvent.h:84
 AliFlowEvent.h:85
 AliFlowEvent.h:86
 AliFlowEvent.h:87
 AliFlowEvent.h:88
 AliFlowEvent.h:89
 AliFlowEvent.h:90
 AliFlowEvent.h:91
 AliFlowEvent.h:92
 AliFlowEvent.h:93
 AliFlowEvent.h:94
 AliFlowEvent.h:95
 AliFlowEvent.h:96
 AliFlowEvent.h:97
 AliFlowEvent.h:98
 AliFlowEvent.h:99
 AliFlowEvent.h:100
 AliFlowEvent.h:101
 AliFlowEvent.h:102
 AliFlowEvent.h:103
 AliFlowEvent.h:104
 AliFlowEvent.h:105
 AliFlowEvent.h:106
 AliFlowEvent.h:107
 AliFlowEvent.h:108
 AliFlowEvent.h:109
 AliFlowEvent.h:110
 AliFlowEvent.h:111
 AliFlowEvent.h:112
 AliFlowEvent.h:113
 AliFlowEvent.h:114
 AliFlowEvent.h:115
 AliFlowEvent.h:116
 AliFlowEvent.h:117