#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() {}
AliFlowEvent( const AliMCEvent* anInput,
const AliCFManager* rpCFManager=NULL,
const AliCFManager* poiCFManager=NULL );
AliFlowEvent( const AliESDEvent* anInput,
const AliCFManager* rpCFManager=NULL,
const AliCFManager* poiCFManager=NULL );
AliFlowEvent( const AliAODEvent* anInput,
const AliCFManager* rpCFManager=NULL,
const AliCFManager* poiCFManager=NULL );
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 );
AliFlowEvent( const AliESDEvent* anInput,
const AliMultiplicity* anInputTracklets,
const AliCFManager* poiCFManager );
AliFlowEvent( const AliESDEvent* anInput,
const TH2F* anInputFMDhist,
const AliCFManager* poiCFManager );
AliFlowEvent( const AliESDEvent* anInput,
const AliESDPmdTrack *pmdtracks,
const AliCFManager* poiCFManager );
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;
Int_t fCachedRun;
Int_t fVZEROcentralityBin;
Float_t fMeanQ[9][2][2];
Float_t fWidthQ[9][2][2];
Float_t fMeanQv3[9][2][2];
Float_t fWidthQv3[9][2][2];
AliVEvent* fEvent;
TArrayD* fChi2A;
TArrayD* fChi2C;
TArrayD* fChi3A;
TArrayD* fChi3C;
ClassDef(AliFlowEvent,4)
};
#endif