added v3
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 Feb 2011 16:37:59 +0000 (16:37 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 Feb 2011 16:37:59 +0000 (16:37 +0000)
PWG2/FLOW/AliFlowCommon/AliFlowEventSimpleMakerOnTheFly.cxx
PWG2/FLOW/AliFlowCommon/AliFlowEventSimpleMakerOnTheFly.h
PWG2/FLOW/macros/runFlowAnalysisOnTheFly.C

index 2920e9b..8ec80e5 100644 (file)
@@ -59,6 +59,8 @@ AliFlowEventSimpleMakerOnTheFly::AliFlowEventSimpleMakerOnTheFly(UInt_t iseed):
   fV2SpreadRP(0.), 
   fMinV2RP(0.),
   fMaxV2RP(0.),
+  fV3RP(0.), 
+  fV3SpreadRP(0.),   
   fV4RP(0.), 
   fV4SpreadRP(0.), 
   fV1vsPtEtaMax(0.),
@@ -128,10 +130,11 @@ void AliFlowEventSimpleMakerOnTheFly::Init()
  Double_t dPhiMin = 0.; // to be improved (move this to the body of contstructor?)
  Double_t dPhiMax = TMath::TwoPi(); // to be improved (move this to the body of contstructor?)
   
- fPhiDistribution = new TF1("fPhiDistribution","1+2.*[0]*TMath::Cos(x-[2])+2.*[1]*TMath::Cos(2*(x-[2]))+2.*[3]*TMath::Cos(4*(x-[2]))",dPhiMin,dPhiMax);
+ fPhiDistribution = new TF1("fPhiDistribution","1+2.*[0]*TMath::Cos(x-[2])+2.*[1]*TMath::Cos(2*(x-[2]))+2.*[4]*TMath::Cos(3*(x-[2]))+2.*[3]*TMath::Cos(4*(x-[2]))",dPhiMin,dPhiMax);
  fPhiDistribution->SetParName(0,"directed flow");
  fPhiDistribution->SetParName(1,"elliptic flow"); 
  fPhiDistribution->SetParName(2,"Reaction Plane");
+ fPhiDistribution->SetParName(4,"triangular flow");
  fPhiDistribution->SetParName(3,"harmonic 4"); // to be improved (name)
 
 }
@@ -171,6 +174,18 @@ void AliFlowEventSimpleMakerOnTheFly::DetermineV1()
  fPhiDistribution->SetParameter(0,dNewV1RP);
   
 } // end of void AliFlowEventSimpleMakerOnTheFly::DetermineV1()
+
+//========================================================================
+
+void AliFlowEventSimpleMakerOnTheFly::DetermineV3()
+{
+ // Determine flow harmonics V3 for current event (if V3 is not pt or eta dependent).
+ Double_t dNewV3RP = fV3RP;
+ if(fV3SpreadRP>0.0) dNewV3RP = fMyTRandom3->Gaus(fV3RP,fV3SpreadRP);
+ fPhiDistribution->SetParameter(4,dNewV3RP);
+
+} // end of void AliFlowEventSimpleMakerOnTheFly::DetermineV3()
   
 //========================================================================
 
@@ -219,19 +234,22 @@ Int_t AliFlowEventSimpleMakerOnTheFly::GlauberModel()
  Int_t multiplicity = 0;
  Double_t v1 = 0.;
  Double_t v2 = 0.;
+ Double_t v3 = 0.;
  Double_t v4 = 0.;
  
- // Determine multiplicity, v1, v2 and v4 from Glauber model:
+ // Determine multiplicity, v1, v2, v3 and v4 from Glauber model:
   
  // multiplicity = ... 
  // v1 = ...
  // v2 = ...
+ // v3 = ...
  // v4 = ...
  
  // Set obtained values as parameters in relevant distributions:
  fPtSpectra->SetParameter(0,multiplicity);
  fPhiDistribution->SetParameter(0,v1);
  fPhiDistribution->SetParameter(1,v2);
+ fPhiDistribution->SetParameter(4,v3); 
  fPhiDistribution->SetParameter(3,v4);
  
  return multiplicity;
@@ -251,6 +269,7 @@ AliFlowEventSimple* AliFlowEventSimpleMakerOnTheFly::CreateEventOnTheFly(AliFlow
    multiplicityRP = DetermineMultiplicity(); 
    if(!(fPtDependentHarmonicV1||fEtaDependentHarmonicV1)) {DetermineV1();}
    if(!(fPtDependentHarmonicV2||fEtaDependentHarmonicV2)) {DetermineV2();}
+   DetermineV3(); // to be improved - add also pt and eta dependence for v3
    if(!(fPtDependentHarmonicV4||fEtaDependentHarmonicV4)) {DetermineV4();}
   } else
     {
@@ -297,6 +316,7 @@ AliFlowEventSimple* AliFlowEventSimpleMakerOnTheFly::CreateEventOnTheFly(AliFlow
   
   Double_t dTmpV1 = 0.;
   Double_t dTmpV2 = 0.;
+  //Double_t dTmpV3 = 0.;
   Double_t dTmpV4 = 0.;
   Bool_t bUniformAcceptance = kTRUE;
   Double_t Pi = TMath::Pi();
index 70ba145..7b75a06 100644 (file)
@@ -35,6 +35,7 @@ class AliFlowEventSimpleMakerOnTheFly {
   Int_t DetermineMultiplicity(); // determine multiplicity for current event
   virtual void DetermineV1(); // determine flow harmonics v1 for current event (if v1 is not pt or eta dependent)
   virtual void DetermineV2(); // determine flow harmonics v2 for current event (if v2 is not pt or eta dependent)
+  virtual void DetermineV3(); // determine flow harmonics v3 for current event (if v3 is not pt or eta dependent)
   virtual void DetermineV4(); // determine flow harmonics v4 for current event (if v4 is not pt or eta dependent)
   Int_t GlauberModel(); // determine multiplicity and flow harmonics for current event from Glauber moder
   AliFlowEventSimple* CreateEventOnTheFly(AliFlowTrackSimpleCuts *cutsRP, AliFlowTrackSimpleCuts *cutsPOI);  // create an event on the fly
@@ -106,6 +107,12 @@ class AliFlowEventSimpleMakerOnTheFly {
   void SetMaxV2RP(Double_t dMaxV2RP) {this->fMaxV2RP = dMaxV2RP;}
   Double_t GetMaxV2RP() const {return this->fMaxV2RP;} 
   
+  void SetV3RP(Double_t dV3RP) {this->fV3RP = dV3RP;}
+  Double_t GetV3RP() const {return this->fV3RP;} 
+  
+  void SetV3SpreadRP(Double_t dV3SpreadRP) {this->fV3SpreadRP = dV3SpreadRP;}
+  Double_t GetV3SpreadRP() const {return this->fV3SpreadRP;} 
+  
   void SetV4RP(Double_t dV4RP) {this->fV4RP = dV4RP;}
   Double_t GetV4RP() const {return this->fV4RP;} 
   
@@ -206,7 +213,9 @@ class AliFlowEventSimpleMakerOnTheFly {
   Double_t  fV2SpreadRP;             // elliptic flow spread of RPs (if sampled from Gaussian)
   Double_t  fMinV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
   Double_t  fMaxV2RP;                // minimal elliptic flow of RPs (if sampled uniformly)
-  
+
+  Double_t  fV3RP;                   // harmonic V3 of RPs
+  Double_t  fV3SpreadRP;             // harmonic V3's spread of RPs  
   Double_t  fV4RP;                   // harmonic V4 of RPs
   Double_t  fV4SpreadRP;             // harmonic V4's spread of RPs
   // (pt,eta) dependent harmonic V1:
index afbf693..8f89c0c 100644 (file)
@@ -16,7 +16,7 @@ Bool_t LYZ1PROD = kTRUE;
 Bool_t LYZ2SUM  = kFALSE;
 Bool_t LYZ2PROD = kFALSE;
 Bool_t LYZEP    = kFALSE;
-Bool_t MH       = kTRUE; // mixed harmonics 
+Bool_t MH       = kFALSE; // mixed harmonics 
 Bool_t NL       = kFALSE; // nested loops
 Bool_t MCEP_AH  = kFALSE; // MCEP in another harmonic 
 //--------------------------------------------------------------------------------------
@@ -122,6 +122,9 @@ Bool_t bConstantV2IsSampledFromGauss = kTRUE;
  // V1:
  Double_t dV1RP = 0.0; // directed flow of RPs 
  Double_t dV1SpreadRP = 0.0; // directed flow spread of RPs
+ // V3:
+ Double_t dV3RP = 0.0; // triangular flow of RPs
+ Double_t dV3SpreadRP = 0.0; // triangular flow spread of RP
  // V4:
  Double_t dV4RP = 0.0; // harmonic V4 of RPs (to be improved: name needed) 
  Double_t dV4SpreadRP = 0.0; // harmonic V4's spread of RPs (to be improved: name needed)
@@ -511,6 +514,12 @@ int runFlowAnalysisOnTheFly(Int_t nEvts=1000, Int_t mode=mLocal)
      eventMakerOnTheFly->SetV2vsEtaSpread(dV2vsEtaSpread);      
     }
    }  
+ // V3:
+ if(!bUseGlauberModel)
+ {
+  eventMakerOnTheFly->SetV3RP(dV3RP);
+  eventMakerOnTheFly->SetV3SpreadRP(dV3SpreadRP);  
+ }    
  // V4:
  if(!(bPtDependentHarmonicV4 || bEtaDependentHarmonicV4))
  {