V2 calculation added
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2004 10:01:28 +0000 (10:01 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2004 10:01:28 +0000 (10:01 +0000)
ANALYSIS/AliFlowAnalysis.cxx
ANALYSIS/AliFlowAnalysis.h

index ec9d081..36d029e 100644 (file)
@@ -53,6 +53,12 @@ Int_t AliFlowAnalysis::Finish()
 Double_t AliFlowAnalysis::GetEventPlane(AliESD* esd)
 {
   //returns event plane
+  if (esd == 0x0)
+   {
+     ::Error("GetFlow","Pointer to ESD is NULL");
+     return -1.0;
+   }
+
   Double_t psi;
   Int_t mult = esd->GetNumberOfTracks();
   
@@ -81,3 +87,37 @@ Double_t AliFlowAnalysis::GetEventPlane(AliESD* esd)
   return psi;
 
 }
+
+void AliFlowAnalysis::GetFlow(AliESD* esd,Double_t& v2,Double_t& psi)
+{
+//returns flow parameters: v2 and event plane
+  if (esd == 0x0)
+   {
+     ::Error("GetFlow","Pointer to ESD is NULL");
+     return;
+   }
+   
+  psi = GetEventPlane(esd);
+  Int_t mult = esd->GetNumberOfTracks();
+  
+  Double_t ssin = 0, scos = 0;
+
+  for (Int_t i=0; i<mult; i++) 
+   {
+     AliESDtrack* esdtrack = esd->GetTrack(i);
+     if (esdtrack == 0x0)
+      {
+        ::Error("GetEventPlane","Can not get track %d", i);
+        continue;
+      }
+      
+     Double_t mom[3];//momentum
+     esdtrack->GetPxPyPz(mom); 
+     Double_t phi = TMath::Pi()+TMath::ATan2(-mom[1],-mom[0]); 
+     
+     ssin += TMath::Sin( 2.0 * (phi - psi));
+     scos += TMath::Cos( 2.0 * (phi - psi));
+   }
+   
+  v2 = TMath::Hypot(ssin,scos);
+}
index 27c2964..5cf4940 100644 (file)
@@ -29,7 +29,7 @@ class AliFlowAnalysis: public AliAnalysis
     Int_t Finish();
    
     static Double_t GetEventPlane(AliESD* esd);
-       
+    static void     GetFlow(AliESD* esd,Double_t& v2,Double_t& psi);
   protected:
 
   private: