1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 /*****************************************************************
6 AliFlowEventSimple: A simple event
9 origin: Naomi van der Kolk (kolk@nikhef.nl)
10 Ante Bilandzic (anteb@nikhef.nl)
11 Raimond Snellings (Raimond.Snellings@nikhef.nl)
12 mods: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
13 *****************************************************************/
15 #ifndef ALIFLOWEVENTSIMPLE_H
16 #define ALIFLOWEVENTSIMPLE_H
19 #include "TParameter.h"
24 class AliFlowTrackSimple;
25 class AliFlowTrackSimpleCuts;
27 class AliFlowEventSimple: public TObject {
31 enum ConstructionMethod {kEmpty,kGenerate};
34 AliFlowEventSimple( Int_t nParticles,
35 ConstructionMethod m=kEmpty,
38 Double_t phiMax=TMath::TwoPi(),
40 Double_t etaMax= 1.0 );
41 AliFlowEventSimple(TTree* anInput, const AliFlowTrackSimpleCuts* rpCuts, const AliFlowTrackSimpleCuts* poiCuts);
42 AliFlowEventSimple(const AliFlowEventSimple& anEvent);
43 AliFlowEventSimple& operator=(const AliFlowEventSimple& anEvent);
44 virtual ~AliFlowEventSimple();
46 Bool_t IsFolder() const {return kTRUE;};
47 void Browse(TBrowser *b);
48 void Print(Option_t* option = "") const; //method to print stats
50 Int_t NumberOfTracks() const { return fNumberOfTracks; }
51 Int_t GetReferenceMultiplicity() const { return fReferenceMultiplicity; }
52 void SetReferenceMultiplicity( Int_t m ) { fReferenceMultiplicity = m; }
53 Int_t GetEventNSelTracksRP() const { return fNumberOfRPs; }
54 void SetEventNSelTracksRP(Int_t nr) { fNumberOfRPs = nr; }
55 Int_t GetEventNSelTracksPOI() const { return fNumberOfPOIs; }
56 void SetEventNSelTracksPOI(Int_t np) { fNumberOfPOIs = np; }
57 Int_t GetNumberOfRPs() const { return fNumberOfRPs; }
58 void SetNumberOfRPs( Int_t nr ) { fNumberOfRPs=nr; }
59 Int_t GetNumberOfPOIs() const { return fNumberOfPOIs; }
60 void SetNumberOfPOIs( Int_t np ) { fNumberOfPOIs=np; }
62 void SetUseGlauberMCSymmetryPlanes() { fUseGlauberMCSymmetryPlanes = kTRUE; }
63 void SetUseExternalSymmetryPlanes(TF1 *gPsi1Psi3 = 0x0,
65 TF1 *gPsi3Psi5 = 0x0);
66 void SetPsi1(Double_t gPsi1) { fPsi1 = gPsi1; }
67 void SetPsi2(Double_t gPsi2) { fPsi2 = gPsi2; }
68 void SetPsi3(Double_t gPsi3) { fPsi3 = gPsi3; }
69 void SetPsi4(Double_t gPsi4) { fPsi4 = gPsi4; }
70 void SetPsi5(Double_t gPsi5) { fPsi5 = gPsi5; }
71 Double_t GetPsi1() const { return fPsi1; }
72 Double_t GetPsi2() const { return fPsi2; }
73 Double_t GetPsi3() const { return fPsi3; }
74 Double_t GetPsi4() const { return fPsi4; }
75 Double_t GetPsi5() const { return fPsi5; }
77 Double_t GetMCReactionPlaneAngle() const { return fMCReactionPlaneAngle; }
78 void SetMCReactionPlaneAngle(Double_t fPhiRP) { fMCReactionPlaneAngle=fPhiRP; fMCReactionPlaneAngleIsSet=kTRUE; }
79 Bool_t IsSetMCReactionPlaneAngle() const { return fMCReactionPlaneAngleIsSet; }
80 void SetAfterBurnerPrecision(Double_t p) { fAfterBurnerPrecision=p; }
81 Double_t GetAfterBurnerPrecision() const { return fAfterBurnerPrecision; }
82 void SetUserModified(Bool_t s=kTRUE) { fUserModified=s; }
83 Bool_t IsUserModified() const { return fUserModified; }
84 void SetShuffleTracks(Bool_t b) {fShuffleTracks=b;}
87 void ResolutionPt(Double_t res);
88 void TagSubeventsInEta(Double_t etaMinA, Double_t etaMaxA, Double_t etaMinB, Double_t etaMaxB );
89 void TagSubeventsByCharge();
90 void TagRP(const AliFlowTrackSimpleCuts* cuts );
91 void TagPOI(const AliFlowTrackSimpleCuts* cuts );
92 void CloneTracks(Int_t n);
93 void AddV1( Double_t v1 );
94 void AddV2( Double_t v2 );
95 void AddV3( Double_t v3 );
96 void AddV4( Double_t v4 );
97 void AddV5( Double_t v5 );
98 void AddFlow( Double_t v1, Double_t v2, Double_t v3, Double_t v4, Double_t v5 );
99 void AddFlow(Double_t v1, Double_t v2, Double_t v3, Double_t v4, Double_t v5,
100 Double_t rp1, Double_t rp2, Double_t rp3, Double_t rp4, Double_t rp5 );
101 void AddV2( TF1* ptDepV2 );
102 void DefineDeadZone( Double_t etaMin, Double_t etaMax, Double_t phiMin, Double_t phiMax );
103 Int_t CleanUpDeadTracks();
106 static TF1* SimplePtSpectrum();
107 static TF1* SimplePtDepV2();
109 AliFlowTrackSimple* GetTrack(Int_t i);
110 void AddTrack( AliFlowTrackSimple* track );
111 AliFlowTrackSimple* MakeNewTrack();
113 virtual AliFlowVector GetQ(Int_t n=2, TList *weightsList=NULL, Bool_t usePhiWeights=kFALSE, Bool_t usePtWeights=kFALSE, Bool_t useEtaWeights=kFALSE);
114 virtual void Get2Qsub(AliFlowVector* Qarray, Int_t n=2, TList *weightsList=NULL, Bool_t usePhiWeights=kFALSE, Bool_t usePtWeights=kFALSE, Bool_t useEtaWeights=kFALSE);
117 virtual void Generate( Int_t nParticles,
120 Double_t phiMax=TMath::TwoPi(),
121 Double_t etaMin=-1.0,
122 Double_t etaMax= 1.0 );
125 TObjArray* fTrackCollection; //-> collection of tracks
126 Int_t fReferenceMultiplicity; // reference multiplicity
127 Int_t fNumberOfTracks; // number of tracks
128 Int_t fNumberOfRPs; // number of tracks that have passed the RP selection
129 Int_t fNumberOfPOIs; // number of tracks that have passed the POI selection
130 Bool_t fUseGlauberMCSymmetryPlanes;// Use symmetry planes (Glauber MC)
131 Bool_t fUseExternalSymmetryPlanes; // Use symmetry planes (external)
132 Double_t fPsi1; // Psi_1
133 Double_t fPsi2; // Psi_2
134 Double_t fPsi3; // Psi_3
135 Double_t fPsi4; // Psi_4
136 Double_t fPsi5; // Psi_5
137 TF1* fPsi1Psi3; // Correlation between Psi_1 and Psi_3
138 TF1* fPsi2Psi4; // Correlation between Psi_2 and Psi_4
139 TF1* fPsi3Psi5; // Correlation between Psi_3 and Psi_5
140 Double_t fMCReactionPlaneAngle; // the angle of the reaction plane from the MC truth
141 Bool_t fMCReactionPlaneAngleIsSet; // did we set it from MC?
142 Double_t fAfterBurnerPrecision; // iteration precision in afterburner
143 Bool_t fUserModified; // did we modify the event in any way (afterburner etc) ?
144 TParameter<Int_t>* fNumberOfTracksWrap; //! number of tracks in TBrowser
145 TParameter<Int_t>* fNumberOfRPsWrap; //! number of tracks that have passed the RP selection in TBrowser
146 TParameter<Int_t>* fNumberOfPOIsWrap; //! number of tracks that have passed the POI selection in TBrowser
147 TParameter<Double_t>* fMCReactionPlaneAngleWrap; //! the angle of the reaction plane from the MC truth in TBrowser
148 Int_t* fShuffledIndexes; //! placeholder for randomized indexes
149 Bool_t fShuffleTracks; // do we shuffle tracks on get?
151 ClassDef(AliFlowEventSimple,1)