AliFlowEventSimpleMakerOnTheFly::AliFlowEventSimpleMakerOnTheFly(UInt_t iseed):
fMultiplicityOfRP(0),
fMultiplicitySpreadOfRP(0.),
- fPtFormula(NULL),
- fPhiFormula(NULL),
+ fV1RP(0.),
+ fV1SpreadRP(0.),
+ fV2RP(0.),
+ fV2SpreadRP(0.),
+ fPtSpectra(NULL),
+ fPhiDistribution(NULL),
fMyTRandom3(NULL),
fCount(0)
{
AliFlowEventSimpleMakerOnTheFly::~AliFlowEventSimpleMakerOnTheFly()
{
// destructor
- if (fPtFormula) delete fPtFormula;
- if (fPhiFormula) delete fPhiFormula;
+ if (fPtSpectra) delete fPtSpectra;
+ if (fPhiDistribution) delete fPhiDistribution;
if (fMyTRandom3) delete fMyTRandom3;
}
Double_t dPtMin = 0.; // to be improved
Double_t dPtMax = 10.; // to be improved
- fPtFormula = new TF1("PtFormula","[0]*x*TMath::Exp(-x*x)",dPtMin,dPtMax);
+ fPtSpectra = new TF1("fPtSpectra","[0]*x*TMath::Exp(-x*x)",dPtMin,dPtMax);
+ fPtSpectra->SetParName(0,"Multiplicity of RPs");
+ // sampling the multiplicity:
+ fMultiplicityOfRP = fMyTRandom3->Gaus(fMultiplicityOfRP,fMultiplicitySpreadOfRP);
+ fPtSpectra->SetParameter(0,fMultiplicityOfRP);
+
- fPtFormula->SetParName(0,"Multiplicity of RPs");
- fPtFormula->SetParameter(0,fMultiplicityOfRP);
-
// phi:
Double_t dPhiMin = 0.; // to be improved
Double_t dPhiMax = TMath::TwoPi(); // to be improved
- fPhiFormula = new TF1("phiDistribution","(1)*(1+2.*[0]*TMath::Cos(2*x))",dPhiMin,dPhiMax);
-
- Double_t dV2 = 0.044; // to be improved
-
- fPhiFormula->SetParName(0,"elliptic flow");
- fPhiFormula->SetParameter(0,dV2);
+ fPhiDistribution = new TF1("fPhiDistribution","1+2.*[0]*TMath::Cos(x)+2.*[1]*TMath::Cos(2*x)",dPhiMin,dPhiMax);
+
+ // sampling the V1:
+ fPhiDistribution->SetParName(0,"directed flow");
+ if(fV1RP>0.0) fV1RP = fMyTRandom3->Gaus(fV1RP,fV1SpreadRP);
+ fPhiDistribution->SetParameter(0,fV1RP);
-
+ // sampling the V2:
+ fPhiDistribution->SetParName(1,"elliptic flow");
+ fV2RP = fMyTRandom3->Gaus(fV2RP,fV2SpreadRP);
+ fPhiDistribution->SetParameter(1,fV2RP);
+
// eta:
Double_t dEtaMin = -1.; // to be improved
Double_t dEtaMax = 1.; // to be improved
-
-
+
Int_t iGoodTracks = 0;
Int_t iSelParticlesRP = 0;
Int_t iSelParticlesPOI = 0;
for(Int_t i=0;i<fMultiplicityOfRP;i++) {
AliFlowTrackSimple* pTrack = new AliFlowTrackSimple();
- pTrack->SetPt(fPtFormula->GetRandom());
+ pTrack->SetPt(fPtSpectra->GetRandom());
pTrack->SetEta(fMyTRandom3->Uniform(dEtaMin,dEtaMax));
- pTrack->SetPhi(fPhiFormula->GetRandom()+fMCReactionPlaneAngle);
+ pTrack->SetPhi(fPhiDistribution->GetRandom()+fMCReactionPlaneAngle);
pTrack->SetForRPSelection(kTRUE);
iSelParticlesRP++;
pTrack->SetForPOISelection(kTRUE);
// setters and getters for global parameters:
void SetMultiplicityOfRP(Int_t multRP) {this->fMultiplicityOfRP = multRP;}
Int_t GetMultiplicityOfRP() const {return this->fMultiplicityOfRP;}
- //................................................................................................
- //................................................................................................
- // setters and getters for event-by-event parameters:
void SetMultiplicitySpreadOfRP(Double_t multSpreadRP) {this->fMultiplicitySpreadOfRP = multSpreadRP;}
Double_t GetMultiplicitySpreadOfRP() const {return this->fMultiplicitySpreadOfRP;}
- //................................................................................................
+ void SetV1RP(Double_t dV1RP) {this->fV1RP = dV1RP;}
+ Double_t GetV1RP() const {return this->fV1RP;}
+
+ void SetV1SpreadRP(Double_t dV1SpreadRP) {this->fV1SpreadRP = dV1SpreadRP;}
+ Double_t GetV1SpreadRP() const {return this->fV1SpreadRP;}
+
+ void SetV2RP(Double_t dV2RP) {this->fV2RP = dV2RP;}
+ Double_t GetV2RP() const {return this->fV2RP;}
+
+ void SetV2SpreadRP(Double_t dV2SpreadRP) {this->fV2SpreadRP = dV2SpreadRP;}
+ Double_t GetV2SpreadRP() const {return this->fV2SpreadRP;}
+ //................................................................................................
+
private:
AliFlowEventSimpleMakerOnTheFly(const AliFlowEventSimpleMakerOnTheFly& anAnalysis); // copy constructor
//................................................................................................
// global parameters:
- Int_t fMultiplicityOfRP; // multiplicity of RPs
- //................................................................................................
-
- //................................................................................................
- // event-by-event parameters:
- Double_t fMultiplicitySpreadOfRP; // multiplicity spread of RPs
+ Int_t fMultiplicityOfRP; // multiplicity of RPs
+ Double_t fMultiplicitySpreadOfRP; // multiplicity spread of RPs
+ Double_t fV1RP; // directed flow of RPs
+ Double_t fV1SpreadRP; // directed flow spread of RPs
+ Double_t fV2RP; // elliptic flow of RPs
+ Double_t fV2SpreadRP; // elliptic flow spread of RPs
//................................................................................................
//................................................................................................
// equations for distributions:
- TF1 *fPtFormula; // transverse momentum distribution
- TF1 *fPhiFormula; // azimuthal distribution
-
+ TF1 *fPtSpectra; // transverse momentum distribution
+ TF1 *fPhiDistribution; // azimuthal distribution
//................................................................................................
TRandom3* fMyTRandom3; // our random generator
Bool_t LYZEP = kFALSE;
Bool_t GFC = kTRUE;
Bool_t QC = kTRUE;
-Bool_t FQD = kTRUE;
+Bool_t FQD = kFALSE;
Bool_t MCEP = kTRUE;
//--------------------------------------------------------------------------------------
-//.................................................................................
-
+//......................................................................................
// Set the event parameters:
Int_t iMultiplicityOfRP = 500; // multiplicity of RPs
+Double_t dMultiplicitySpreadOfRP = 100; // multiplicity spread of RPs
-//.................................................................................
-
+Double_t dV2RP = 0.05; // elliptic flow of RPs
+Double_t dV2SpreadRP = 0.001; // elliptic flow spread of RPs
+Double_t dV1RP = 0.0; // directed flow of RPs
+Double_t dV1SpreadRP = 0.0; // directed flow spread of RPs
+//......................................................................................
enum anaModes {mLocal,mLocalSource,mLocalPAR,};
// mLocal: Analyze data on your computer using aliroot
// mLocalPAR: Analyze data on your computer using root + PAR files
// mLocalSource: Analyze data on your computer using root + source files
-int runFlowAnalysisOnTheFly(Int_t mode=mLocal, Int_t nEvts=1)
+int runFlowAnalysisOnTheFly(Int_t mode=mLocal, Int_t nEvts=100)
{
TStopwatch timer;
timer.Start();
cout<<endl;
cout<<endl;
-
LoadLibraries(mode);
- //initialize the random generator
+ // Initialize the random generator
TTimeStamp dt;
UInt_t sseed = dt.GetNanoSec()/1000;
// Initialize the flowevent maker
AliFlowEventSimpleMakerOnTheFly* eventMakerOnTheFly = new AliFlowEventSimpleMakerOnTheFly(sseed);
-
//---------------------------------------------------------------------------------------
// Initialize all the flow methods:
AliFlowAnalysisWithQCumulants *qc = NULL;
}
//---------------------------------------------------------------------------------------
+ // set the global event parameters:
+ eventMakerOnTheFly->SetMultiplicityOfRP(iMultiplicityOfRP);
+ eventMakerOnTheFly->SetMultiplicitySpreadOfRP(dMultiplicitySpreadOfRP);
+ eventMakerOnTheFly->SetV1RP(dV1RP);
+ eventMakerOnTheFly->SetV1SpreadRP(dV1SpreadRP);
+ eventMakerOnTheFly->SetV2RP(dV2RP);
+ eventMakerOnTheFly->SetV2SpreadRP(dV2SpreadRP);
//---------------------------------------------------------------------------------------
// create and analyze events 'on the fly':
- // set the global event parameters:
- eventMakerOnTheFly->SetMultiplicityOfRP(iMultiplicityOfRP);
-
for(Int_t i=0;i<nEvts;i++) {
// creating the event with above settings:
AliFlowEventSimple *event = eventMakerOnTheFly->CreateEventOnTheFly();