more efficient use of vzero calibration code, remove the false impression that the...
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliFlowEvent.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3 /* $Id$ */
4
5 /*****************************************************************
6   AliFlowEvent: Event container for flow analysis                  
7                                      
8   origin:   Mikolaj Krzewicki  (mikolaj.krzewicki@cern.ch)
9   mods:     Redmer A. Bertens (rbertens@cern.ch)
10 *****************************************************************/
11
12 #ifndef ALIFLOWEVENT_H
13 #define ALIFLOWEVENT_H
14
15 class AliFlowTrackCuts;
16 class AliFlowTrack;
17 class AliCFManager;
18 class AliVEvent;
19 class AliMCEvent;
20 class AliESDEvent;
21 class AliAODEvent;
22 class AliMultiplicity;
23 class AliESDPmdTrack;
24 class AliFlowVector;
25 class TH2F;
26
27 #include "AliFlowEventSimple.h"
28
29 class AliFlowEvent: public AliFlowEventSimple {
30 public:
31
32   enum KineSource { kNoKine, kESDkine, kMCkine };
33
34   AliFlowEvent();
35   AliFlowEvent(Int_t n);
36   AliFlowEvent(const AliFlowEvent& event);
37   AliFlowEvent& operator=(const AliFlowEvent& event);
38   virtual  ~AliFlowEvent() {}
39
40   //deprecated
41   AliFlowEvent( const AliMCEvent* anInput,
42                 const AliCFManager* rpCFManager=NULL,
43                 const AliCFManager* poiCFManager=NULL ); //use CF(2x)
44   AliFlowEvent( const AliESDEvent* anInput,  
45                 const AliCFManager* rpCFManager=NULL, 
46                 const AliCFManager* poiCFManager=NULL ); //use CF(2x)
47   AliFlowEvent( const AliAODEvent* anInput, 
48                 const AliCFManager* rpCFManager=NULL, 
49                 const AliCFManager* poiCFManager=NULL );  //use CF(2x)
50   AliFlowEvent( const AliESDEvent* anInput,
51                 const AliCFManager* poiCFManager,
52                 Bool_t hybrid);
53   AliFlowEvent( const AliESDEvent* anInput, 
54                 const AliMCEvent* anInputMc, 
55                 KineSource anOption=kNoKine,
56                 const AliCFManager* rpCFManager=NULL, 
57                 const AliCFManager* poiCFManager=NULL );  //use CF(2x)
58   AliFlowEvent( const AliESDEvent* anInput,
59                 const AliMultiplicity* anInputTracklets,
60                 const AliCFManager* poiCFManager );
61   AliFlowEvent( const AliESDEvent* anInput,
62                 const TH2F* anInputFMDhist,
63                 const AliCFManager* poiCFManager );
64   //pmd
65   AliFlowEvent( const AliESDEvent* anInput,
66                 const AliESDPmdTrack *pmdtracks,
67                 const AliCFManager* poiCFManager );
68   //pmd
69   //end of deprecated
70
71   AliFlowEvent( AliFlowTrackCuts* rpCuts,
72                 AliFlowTrackCuts* poiCuts );
73   
74   void Fill( AliFlowTrackCuts* rpCuts,
75              AliFlowTrackCuts* poiCuts );
76
77   void FindDaughters(Bool_t keepDaughtersInRPselection=kFALSE);
78
79   void SetMCReactionPlaneAngle(const AliMCEvent* mcEvent);
80   using AliFlowEventSimple::SetMCReactionPlaneAngle;
81
82   AliFlowTrack* GetTrack( Int_t i );
83
84   void InsertTrack(AliFlowTrack*);
85
86   virtual void Get2Qsub(AliFlowVector* Qarray, Int_t n = 2, TList *weightsList = 0x0, Bool_t usePhiWeights = 0x0, Bool_t usePtWeights = 0x0, Bool_t useEtaWeights = 0x0);
87   void SetVZEROCalibrationForTrackCuts(AliFlowTrackCuts* cuts);
88
89   virtual void ClearFast();
90   virtual void ClearCachedRun();
91
92 protected:
93   AliFlowTrack* ReuseTrack( Int_t i);
94
95 private:
96   Int_t         fApplyRecentering;      // apply recentering of q-vectors? 2010 is 10h style, 2011 is 11h style
97   Int_t         fCachedRun;             //! cached calibration info for vzero
98   Int_t         fVZEROcentralityBin;    //! centrality bin for the current event 
99   Float_t       fMeanQ[9][2][2];        //! recentering
100   Float_t       fWidthQ[9][2][2];       //! recentering
101   Float_t       fMeanQv3[9][2][2];      //! recentering
102   Float_t       fWidthQv3[9][2][2];     //! recentering
103   AliVEvent*    fEvent;                 //! current event
104
105
106   ClassDef(AliFlowEvent,4)
107 };
108
109 #endif
110
111