First prototype the analysis framework
[u/mrichter/AliRoot.git] / ANALYSIS / AliFlowAnalysis.cxx
1 #include "AliFlowAnalysis.h"
2 //________________________________
3 ///////////////////////////////////////////////////////////
4 //
5 // class AliFlowAnalysis
6 //
7 // Flow Analysis
8 //
9 //
10 // S.Radomski@gsi.de
11 // Piotr.Skowronski@cern.ch
12 //
13 ///////////////////////////////////////////////////////////
14 /*********************************************************/
15
16 #include <TString.h>
17 #include <TParticle.h>
18
19 #include <AliStack.h>
20 #include <AliESDtrack.h>
21 #include <AliESD.h>
22
23 ClassImp(AliFlowAnalysis)
24
25 Int_t AliFlowAnalysis::Init()
26 {
27   //Initilizes anaysis
28   Info("Init","");
29   return 0; 
30 }
31
32 /*********************************************************/
33
34 Int_t AliFlowAnalysis::ProcessEvent(AliESD* esd, AliStack* stack)
35 {
36  
37   Info("ProcessEvent","Stack address %#x",stack);
38   Double_t psi = GetEventPlane(esd);
39   Info("ProcessEvent","Event plane is %f",psi);
40   return 0;
41   
42 }
43 /*********************************************************/
44
45 Int_t AliFlowAnalysis::Finish()
46 {
47   //Finish analysis and writes results
48   Info("Init","Finish");
49   return 0;
50 }
51 /*********************************************************/
52
53 Double_t AliFlowAnalysis::GetEventPlane(AliESD* esd)
54 {
55   //returns event plane
56   Double_t psi;
57   Int_t mult = esd->GetNumberOfTracks();
58   
59   Double_t ssin = 0, scos = 0;
60
61   for (Int_t i=0; i<mult; i++) 
62    {
63      AliESDtrack* esdtrack = esd->GetTrack(i);
64      if (esdtrack == 0x0)
65       {
66         ::Error("GetEventPlane","Can not get track %d", i);
67         continue;
68       }
69       
70      Double_t mom[3];//momentum
71      esdtrack->GetPxPyPz(mom); 
72      Double_t phi = TMath::Pi()+TMath::ATan2(-mom[1],-mom[0]); 
73      
74      ssin += TMath::Sin( 2.0 * phi );
75      scos += TMath::Cos( 2.0 * phi );
76    }
77
78   psi = atan2 (ssin, scos) / 2.0;
79   psi = psi * 180. / TMath::Pi(); 
80   
81   return psi;
82
83 }