1 //=========Total multiplicity=========//
2 Double_t nTotalMultiplicityMean = 100.;
3 Double_t nTotalMultiplicitySigma = 10.;
5 //=========Net charge=========//
6 Double_t nNetChargeMean = 0.0;
7 Double_t nNetChargeSigma = 3.0;
9 //==============Particles and spectra==============//
10 //Double_t gAllChargesTemperature = 0.11; //in GeV
11 Double_t gAllChargesTemperature = 4.5; //not temperature==>modified hagedorn
12 Double_t gPionPercentage = 0.8;
13 Double_t gPionTemperature = 0.1; //in GeV
14 Double_t gKaonPercentage = 0.12;
15 Double_t gKaonTemperature = 0.12; //in GeV
16 Double_t gProtonPercentage = 0.08;
17 Double_t gProtonTemperature = 0.2; //in GeV
18 //==============Particles and spectra==============//
20 //==============Flow values==============//
21 Double_t gDirectedFlow = 0.0;
22 Double_t gEllipticFlow = 0.2;
23 Double_t gTriangularFlow = 0.0;
24 Double_t gQuandrangularFlow = 0.0;
25 Double_t gPentangularFlow = 0.0;
26 //==============Flow values==============//
28 //=========Acceptance definition=========//
29 Double_t gEtaMin = -1.0;
30 Double_t gEtaMax = 1.0;
31 Double_t gPtMin = 0.1;
32 Double_t gPtMax = 20.0;
33 //=========Acceptance definition=========//
35 //=========Acceptance filter=========//
36 Bool_t kUseAcceptanceFilter = kFALSE;
37 const char *gAcceptanceFilterFile = "efficiencyALICE.root";
38 //=========Acceptance filter=========//
40 //=========Detector effects=========//
41 Bool_t kSimulateDetectorEffects = kTRUE;
42 Int_t fNumberOfInefficientSectors = 5;//inefficient secotrs in phi
43 Double_t fInefficiencyFactorInPhi = 0.65;//efficiency factor < 1
44 Int_t fNumberOfDeadSectors = 3;//number of dead sectors
45 Bool_t fEfficiencyDropNearEtaEdges = kTRUE;//efficiency drop in eta edges
46 //=========Detector effects=========//
48 //=========Jets=========//
49 Bool_t kUseJets = kFALSE;
50 //=========Jets=========//
52 //=========Dynamical Correlations=========//
53 Bool_t kUseDynamicalCorrelations = kFALSE;
54 Double_t gDynamicalCorrelationsPercentage = 0.1;
55 //=========Dynamical Correlations=========//
57 //=========bf object configuration=========//
58 Bool_t kRunShuffling = kFALSE;
59 Bool_t kRunMixing = kTRUE;
60 Bool_t bResonancesCut = kFALSE;
61 Bool_t bHBTcut = kFALSE;
62 Bool_t bConversionCut = kFALSE;
63 Bool_t bMomentumDifferenceCut = kFALSE;
64 TString fArgEventClass = "EventPlane";
65 Double_t deltaEtaMax = TMath::Abs(gEtaMax-gEtaMin);
66 Bool_t bVertexBinning = kFALSE;
67 //=========bf object configuration=========//
69 //=========Debug option=========//
70 Bool_t kUseDebug = kFALSE;
71 //=========Debug option=========//
73 // Run macro used for the toy model analysis
74 // Author: Panos.Christakoglou@nikhef.nl
76 //____________________________________________________________________
77 void runBalanceFunctionToyModel(Int_t nEvents = 10,
78 Bool_t kUseAllCharges = kTRUE) {
83 gSystem->Load("libCore");
84 gSystem->Load("libGeom");
85 gSystem->Load("libVMC");
86 gSystem->Load("libPhysics");
87 gSystem->Load("libTree");
89 gSystem->Load("libSTEERBase");
90 gSystem->Load("libESD");
91 gSystem->Load("libAOD");
92 gSystem->Load("libANALYSIS");
93 gSystem->Load("libANALYSISalice");
94 gSystem->Load("libEventMixing");
95 gSystem->Load("libCORRFW");
96 gSystem->Load("libPWGTools");
97 gSystem->Load("libPWGCFebye");
99 //configure the bf objects
100 gROOT->LoadMacro("$ALICE_ROOT/PWGCF/EBYE/macros/configBalanceFunctionPsiAnalysis.C");
101 AliBalancePsi *bf = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
102 AliBalancePsi *bfm = 0x0;
104 bfm = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
106 //Configure the toy model object
107 AliAnalysisTaskToyModel *toyModelAnalysis = new AliAnalysisTaskToyModel();
108 if(kUseDebug) toyModelAnalysis->SetDebugFlag();
109 toyModelAnalysis->SetAnalysisObject(bf);
111 toyModelAnalysis->SetMixingObject(bfm);
112 toyModelAnalysis->SetTotalMultiplicity(nTotalMultiplicityMean,nTotalMultiplicitySigma);
113 toyModelAnalysis->SetNetCharge(nNetChargeMean,nNetChargeSigma);
114 toyModelAnalysis->SetKinematicsCutsMC(gPtMin,gPtMax,gEtaMin,gEtaMax);
117 toyModelAnalysis->SetSpectraTemperatureForAllCharges(gAllChargesTemperature);
118 toyModelAnalysis->SetDirectedFlowForAllCharges(gDirectedFlow);
119 toyModelAnalysis->SetEllipticFlowForAllCharges(gEllipticFlow);
120 toyModelAnalysis->SetTriangularFlowForAllCharges(gTriangularFlow);
121 toyModelAnalysis->SetQuandrangularFlowForAllCharges(gQuandrangularFlow);
122 toyModelAnalysis->SetPentangularFlowForAllCharges(gPentangularFlow);
126 toyModelAnalysis->SetPionPercentage(gPionPercentage);
127 toyModelAnalysis->SetSpectraTemperatureForPions(gPionTemperature);
128 toyModelAnalysis->SetDirectedFlowForPions(gDirectedFlow);
129 toyModelAnalysis->SetEllipticFlowForPions(gEllipticFlow);
130 toyModelAnalysis->SetTriangularFlowForPions(gTriangularFlow);
131 toyModelAnalysis->SetQuandrangularFlowForPions(gQuandrangularFlow);
132 toyModelAnalysis->SetPentangularFlowForPions(gPentangularFlow);
135 toyModelAnalysis->SetKaonPercentage(gKaonPercentage);
136 toyModelAnalysis->SetSpectraTemperatureForKaons(gKaonTemperature);
137 toyModelAnalysis->SetDirectedFlowForKaons(gDirectedFlow);
138 toyModelAnalysis->SetEllipticFlowForKaons(gEllipticFlow);
139 toyModelAnalysis->SetTriangularFlowForKaons(gTriangularFlow);
140 toyModelAnalysis->SetQuandrangularFlowForKaons(gQuandrangularFlow);
141 toyModelAnalysis->SetPentangularFlowForKaons(gPentangularFlow);
144 toyModelAnalysis->SetProtonPercentage(gProtonPercentage);
145 toyModelAnalysis->SetSpectraTemperatureForProtons(gProtonTemperature);
146 toyModelAnalysis->SetDirectedFlowForProtons(gDirectedFlow);
147 toyModelAnalysis->SetEllipticFlowForProtons(gEllipticFlow);
148 toyModelAnalysis->SetTriangularFlowForProtons(gTriangularFlow);
149 toyModelAnalysis->SetQuandrangularFlowForProtons(gQuandrangularFlow);
150 toyModelAnalysis->SetPentangularFlowForProtons(gPentangularFlow);
155 toyModelAnalysis->SetUseJets();
157 //Dynamical correlations
158 if(kUseDynamicalCorrelations)
159 toyModelAnalysis->SetCorrelationPercentage(gDynamicalCorrelationsPercentage);
162 if(kUseAcceptanceFilter) {
163 TFile *gParamFile = TFile::Open(gAcceptanceFilterFile);
164 if((!gParamFile) || (!gParamFile->IsOpen())) {
165 Printf("File %s not found!!!",acceptanceFilename);
170 for(Int_t iCentrality = 0; iCentrality < numberOfCentralityBins; iCentrality++) {
171 gParamName = "gParamCentrality0";//centrality 0-5%
172 TF1 *gParameterization = dynamic_cast<TF1 *>(gParamFile->Get(gParamName.Data()));
174 toyModelAnalysis->SetAcceptanceParameterization(gParameterization);
178 if(kSimulateDetectorEffects)
179 toyModelAnalysis->SimulateDetectorEffects();
180 if(fNumberOfInefficientSectors) {
181 toyModelAnalysis->SetNumberOfInefficientSectorsInPhi(fNumberOfInefficientSectors);
182 toyModelAnalysis->SetInefficiencyFactor(fInefficiencyFactorInPhi);
184 if(fNumberOfDeadSectors)
185 toyModelAnalysis->SetNumberOfDeadSectorsInPhi(fNumberOfDeadSectors);
186 if(fEfficiencyDropNearEtaEdges)
187 toyModelAnalysis->EnableEfficiencyDropNearEtaEdges();
190 toyModelAnalysis->Init();
191 toyModelAnalysis->CreateOutputObjects();
192 toyModelAnalysis->Run(nEvents);
193 toyModelAnalysis->FinishOutput();
195 // Print real and CPU time used for analysis: