fV2SpreadRP(0.),
fMinV2RP(0.),
fMaxV2RP(0.),
+ fV3RP(0.),
+ fV3SpreadRP(0.),
fV4RP(0.),
fV4SpreadRP(0.),
fV1vsPtEtaMax(0.),
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)
}
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()
//========================================================================
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;
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
{
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();
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
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;}
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:
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
//--------------------------------------------------------------------------------------
// 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)
eventMakerOnTheFly->SetV2vsEtaSpread(dV2vsEtaSpread);
}
}
+ // V3:
+ if(!bUseGlauberModel)
+ {
+ eventMakerOnTheFly->SetV3RP(dV3RP);
+ eventMakerOnTheFly->SetV3SpreadRP(dV3SpreadRP);
+ }
// V4:
if(!(bPtDependentHarmonicV4 || bEtaDependentHarmonicV4))
{