]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/macros/runBalanceFunctionToyModel.C
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / runBalanceFunctionToyModel.C
CommitLineData
7fac8669 1//=========Total multiplicity=========//
2Double_t nTotalMultiplicityMean = 100.;
3Double_t nTotalMultiplicitySigma = 10.;
4
5//=========Net charge=========//
6Double_t nNetChargeMean = 0.0;
7Double_t nNetChargeSigma = 3.0;
8
9//==============Particles and spectra==============//
10//Double_t gAllChargesTemperature = 0.11; //in GeV
11Double_t gAllChargesTemperature = 4.5; //not temperature==>modified hagedorn
12Double_t gPionPercentage = 0.8;
13Double_t gPionTemperature = 0.1; //in GeV
14Double_t gKaonPercentage = 0.12;
15Double_t gKaonTemperature = 0.12; //in GeV
16Double_t gProtonPercentage = 0.08;
17Double_t gProtonTemperature = 0.2; //in GeV
18//==============Particles and spectra==============//
19
20//==============Flow values==============//
21Double_t gDirectedFlow = 0.0;
22Double_t gEllipticFlow = 0.2;
23Double_t gTriangularFlow = 0.0;
24Double_t gQuandrangularFlow = 0.0;
25Double_t gPentangularFlow = 0.0;
26//==============Flow values==============//
27
28//=========Acceptance definition=========//
29Double_t gEtaMin = -1.0;
30Double_t gEtaMax = 1.0;
31Double_t gPtMin = 0.1;
32Double_t gPtMax = 20.0;
33//=========Acceptance definition=========//
34
35//=========Acceptance filter=========//
36Bool_t kUseAcceptanceFilter = kFALSE;
37const char *gAcceptanceFilterFile = "efficiencyALICE.root";
38//=========Acceptance filter=========//
39
40//=========Detector effects=========//
41Bool_t kSimulateDetectorEffects = kTRUE;
42Int_t fNumberOfInefficientSectors = 5;//inefficient secotrs in phi
43Double_t fInefficiencyFactorInPhi = 0.65;//efficiency factor < 1
44Int_t fNumberOfDeadSectors = 3;//number of dead sectors
45Bool_t fEfficiencyDropNearEtaEdges = kTRUE;//efficiency drop in eta edges
46//=========Detector effects=========//
47
48//=========Jets=========//
49Bool_t kUseJets = kFALSE;
50//=========Jets=========//
51
52//=========Dynamical Correlations=========//
53Bool_t kUseDynamicalCorrelations = kFALSE;
54Double_t gDynamicalCorrelationsPercentage = 0.1;
55//=========Dynamical Correlations=========//
56
57//=========bf object configuration=========//
58Bool_t kRunShuffling = kFALSE;
59Bool_t kRunMixing = kTRUE;
60Bool_t bResonancesCut = kFALSE;
61Bool_t bHBTcut = kFALSE;
62Bool_t bConversionCut = kFALSE;
63Bool_t bMomentumDifferenceCut = kFALSE;
64TString fArgEventClass = "EventPlane";
65Double_t deltaEtaMax = TMath::Abs(gEtaMax-gEtaMin);
66Bool_t bVertexBinning = kFALSE;
67//=========bf object configuration=========//
68
69//=========Debug option=========//
70Bool_t kUseDebug = kFALSE;
71//=========Debug option=========//
72
73// Run macro used for the toy model analysis
74// Author: Panos.Christakoglou@nikhef.nl
75
76//____________________________________________________________________
77void runBalanceFunctionToyModel(Int_t nEvents = 10,
78 Bool_t kUseAllCharges = kTRUE) {
79 TStopwatch timer;
80 timer.Start();
81
82 // load libraries
83 gSystem->Load("libCore.so");
84 gSystem->Load("libGeom.so");
85 gSystem->Load("libVMC.so");
86 gSystem->Load("libPhysics.so");
87 gSystem->Load("libTree.so");
88
89 gSystem->Load("libSTEERBase");
90 gSystem->Load("libESD");
91 gSystem->Load("libAOD");
92 gSystem->Load("libANALYSIS");
93 gSystem->Load("libANALYSISalice");
94 gSystem->Load("libEventMixing.so");
95 gSystem->Load("libCORRFW");
96 gSystem->Load("libPWGTools");
97 gSystem->Load("libPWGCFebye");
98
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;
103 if(kRunMixing)
104 bfm = GetBalanceFunctionObject("MC","",0,100,kRunShuffling,bResonancesCut,bHBTcut,bConversionCut,bMomentumDifferenceCut,fArgEventClass,deltaEtaMax,bVertexBinning);
105
106 //Configure the toy model object
107 AliAnalysisTaskToyModel *toyModelAnalysis = new AliAnalysisTaskToyModel();
108 if(kUseDebug) toyModelAnalysis->SetDebugFlag();
109 toyModelAnalysis->SetAnalysisObject(bf);
110 if(kRunMixing)
111 toyModelAnalysis->SetMixingObject(bfm);
112 toyModelAnalysis->SetTotalMultiplicity(nTotalMultiplicityMean,nTotalMultiplicitySigma);
113 toyModelAnalysis->SetNetCharge(nNetChargeMean,nNetChargeSigma);
114 toyModelAnalysis->SetKinematicsCutsMC(gPtMin,gPtMax,gEtaMin,gEtaMax);
115
116 if(kUseAllCharges) {
117 toyModelAnalysis->SetSpectraTemperatureForAllCharges(gAllChargesTemperature);
118 toyModelAnalysis->SetDirectedFlowForAllCharges(gDirectedFlow);
119 toyModelAnalysis->SetEllipticFlowForAllCharges(gEllipticFlow);
120 toyModelAnalysis->SetTriangularFlowForAllCharges(gTriangularFlow);
121 toyModelAnalysis->SetQuandrangularFlowForAllCharges(gQuandrangularFlow);
122 toyModelAnalysis->SetPentangularFlowForAllCharges(gPentangularFlow);
123 }
124 else {
125 //Pions
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);
133
134 //Kaons
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);
142
143 //Protons
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);
151 }
152
153 //Jets
154 if(kUseJets)
155 toyModelAnalysis->SetUseJets();
156
157 //Dynamical correlations
158 if(kUseDynamicalCorrelations)
159 toyModelAnalysis->SetCorrelationPercentage(gDynamicalCorrelationsPercentage);
160
161 //Acceptance filter
162 if(kUseAcceptanceFilter) {
163 TFile *gParamFile = TFile::Open(gAcceptanceFilterFile);
164 if((!gParamFile) || (!gParamFile->IsOpen())) {
165 Printf("File %s not found!!!",acceptanceFilename);
166 return;
167 }
168
169 TString gParamName;
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()));
173 }
174 toyModelAnalysis->SetAcceptanceParameterization(gParameterization);
175 }
176
177 //Detector effects
178 if(kSimulateDetectorEffects)
179 toyModelAnalysis->SimulateDetectorEffects();
180 if(fNumberOfInefficientSectors) {
181 toyModelAnalysis->SetNumberOfInefficientSectorsInPhi(fNumberOfInefficientSectors);
182 toyModelAnalysis->SetInefficiencyFactor(fInefficiencyFactorInPhi);
183 }
184 if(fNumberOfDeadSectors)
185 toyModelAnalysis->SetNumberOfDeadSectorsInPhi(fNumberOfDeadSectors);
186 if(fEfficiencyDropNearEtaEdges)
187 toyModelAnalysis->EnableEfficiencyDropNearEtaEdges();
188
189 //Initialize and run
190 toyModelAnalysis->Init();
191 toyModelAnalysis->CreateOutputObjects();
192 toyModelAnalysis->Run(nEvents);
193 toyModelAnalysis->FinishOutput();
194
195 // Print real and CPU time used for analysis:
196 timer.Stop();
197 timer.Print();
198}
199